From b792929f0516346ba0acd2f9f49f8df9e781f5a2 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 8 May 2026 22:55:59 +0700 Subject: [PATCH 1/2] [Naming] Handle rename with use after anonymous class on RenameParamToMatchTypeRector --- .../with_use_after_anonymous_class.php.inc | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/with_use_after_anonymous_class.php.inc diff --git a/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/with_use_after_anonymous_class.php.inc b/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/with_use_after_anonymous_class.php.inc new file mode 100644 index 00000000000..dc2914d3f24 --- /dev/null +++ b/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/with_use_after_anonymous_class.php.inc @@ -0,0 +1,61 @@ +names[] = implode('\\', $node->getParts()); + } + + return null; + } + }; + + $nodeTraverser->addVisitor($visitor); + $nodeTraverser->traverse([$node]); + } +} + +?> +----- +names[] = implode('\\', $node->getParts()); + } + + return null; + } + }; + + $nodeTraverser->addVisitor($visitor); + $nodeTraverser->traverse([$classLike]); + } +} + +?> From 6b84ced96e6213d3bcf56e6f643c4a03494b6890 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 8 May 2026 22:56:29 +0700 Subject: [PATCH 2/2] Fix --- rules/Naming/VariableRenamer.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rules/Naming/VariableRenamer.php b/rules/Naming/VariableRenamer.php index f005b2ec036..18c97291cb7 100644 --- a/rules/Naming/VariableRenamer.php +++ b/rules/Naming/VariableRenamer.php @@ -10,6 +10,8 @@ use PhpParser\Node\FunctionLike; use PhpParser\Node\Param; use PhpParser\Node\Stmt; +use PhpParser\Node\Stmt\Class_; +use PhpParser\Node\Stmt\Function_; use PhpParser\NodeVisitor; use PHPStan\Analyser\MutatingScope; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; @@ -56,6 +58,10 @@ function (Node $node) use ( &$currentStmt, &$currentFunctionLike ): int|null|Variable { + if ($node instanceof Class_ || $node instanceof Function_) { + return NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN; + } + // skip param names if ($node instanceof Param) { return NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN;