From e773ec890badad0fef8aa48896f01fcdf03cefe1 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 3 Jul 2026 13:36:40 +0200 Subject: [PATCH] [TypeDeclaration] Skip type-guarded trait methods in StrictArrayParamDimFetchRector --- .../Fixture/skip_guarded_trait.php.inc | 11 +++++++++++ .../TypeGuardedClasses/config/configured_rule.php | 8 +++++++- .../ClassMethod/StrictArrayParamDimFetchRector.php | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 rules-tests/TypeDeclaration/TypeGuardedClasses/Fixture/skip_guarded_trait.php.inc diff --git a/rules-tests/TypeDeclaration/TypeGuardedClasses/Fixture/skip_guarded_trait.php.inc b/rules-tests/TypeDeclaration/TypeGuardedClasses/Fixture/skip_guarded_trait.php.inc new file mode 100644 index 00000000000..426d875e18a --- /dev/null +++ b/rules-tests/TypeDeclaration/TypeGuardedClasses/Fixture/skip_guarded_trait.php.inc @@ -0,0 +1,11 @@ +typeGuardedClasses([GuardedRepository::class]); + $rectorConfig->typeGuardedClasses([ + GuardedRepository::class, + 'Rector\Tests\TypeDeclaration\TypeGuardedClasses\Fixture\SkipGuardedTrait', + ]); + + $rectorConfig->rule(StrictArrayParamDimFetchRector::class); $rectorConfig->ruleWithConfiguration(AddReturnTypeDeclarationRector::class, [ new AddReturnTypeDeclaration( diff --git a/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php b/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php index 27f12028eee..dabe5b87848 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/StrictArrayParamDimFetchRector.php @@ -95,6 +95,10 @@ public function refactor(Node $node): ?Node return null; } + if ($node instanceof ClassMethod && $this->parentClassMethodTypeOverrideGuard->isTypeGuardedClass($node)) { + return null; + } + foreach ($node->getParams() as $param) { if ($param->type instanceof Node) { continue;