diff --git a/src/PhpParser/NodeVisitor/PhpDocInfoRemovingNodeVisitor.php b/src/PhpParser/NodeVisitor/PhpDocInfoRemovingNodeVisitor.php new file mode 100644 index 00000000000..986decbb129 --- /dev/null +++ b/src/PhpParser/NodeVisitor/PhpDocInfoRemovingNodeVisitor.php @@ -0,0 +1,18 @@ +setAttribute(AttributeKey::PHP_DOC_INFO, null); + return $node; + } +} diff --git a/src/Rector/AbstractRector.php b/src/Rector/AbstractRector.php index abb90e8f46f..9988b66a6f2 100644 --- a/src/Rector/AbstractRector.php +++ b/src/Rector/AbstractRector.php @@ -35,6 +35,7 @@ use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser; use Rector\PhpParser\Comparing\NodeComparator; use Rector\PhpParser\Node\NodeFactory; +use Rector\PhpParser\NodeVisitor\PhpDocInfoRemovingNodeVisitor; use Rector\Skipper\Skipper\Skipper; use Rector\Skipper\ValueObject\SkipMatch; use Rector\ValueObject\Application\File; @@ -280,7 +281,7 @@ protected function mirrorComments(Node $newNode, Node $oldNode): void */ private function cloneNode(Node $node): Node { - $nodeTraverser = new NodeTraverser(new CloningVisitor()); + $nodeTraverser = new NodeTraverser(new CloningVisitor(), new PhpDocInfoRemovingNodeVisitor()); return $nodeTraverser->traverse([$node])[0]; } diff --git a/stubs/Config/App.php b/stubs/Config/App.php new file mode 100644 index 00000000000..f75c070cc5f --- /dev/null +++ b/stubs/Config/App.php @@ -0,0 +1,11 @@ + +----- + diff --git a/tests/Issues/ImportFullyQualifiedIdentifierDocblock/config/configured_rule.php b/tests/Issues/ImportFullyQualifiedIdentifierDocblock/config/configured_rule.php index f145ce3083e..f1825a9c5a5 100644 --- a/tests/Issues/ImportFullyQualifiedIdentifierDocblock/config/configured_rule.php +++ b/tests/Issues/ImportFullyQualifiedIdentifierDocblock/config/configured_rule.php @@ -3,8 +3,14 @@ declare(strict_types=1); use Rector\Config\RectorConfig; +use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedConstructorParamRector; use Rector\Tests\Issues\ImportFullyQualifiedIdentifierDocblock\Source\AddFullyQualifiedIdentifierDocblockRector; return RectorConfig::configure() - ->withRules([AddFullyQualifiedIdentifierDocblockRector::class]) - ->withImportNames(); + ->withRules([AddFullyQualifiedIdentifierDocblockRector::class, RemoveUnusedConstructorParamRector::class]) + ->withImportNames() + ->withSkip([ + RemoveUnusedConstructorParamRector::class => [ + realpath(__DIR__ . '/../Fixture') . '/keep_import_used_in_param.php', + ], + ]);