From 40d9102eab5099030fdd11d21a3b00d21aed0825 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 6 Jun 2022 12:53:42 +0700 Subject: [PATCH] [Renaming] Do not Rename Docblock inner Namespace on RenameClassRector (#2441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add failing test for rector/rector#7209 * update fixture * Closes #2440 * fixture Co-authored-by: Einar Gangsø --- .../ClassRenamePhpDocNodeVisitor.php | 5 ++ ...ot_rename_docblock_inner_namespace.php.inc | 58 +++++++++++++++++++ .../config/auto_import_names.php | 1 + 3 files changed, 64 insertions(+) create mode 100644 rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/do_not_rename_docblock_inner_namespace.php.inc diff --git a/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php b/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php index a248e9029c4..c597392e2cb 100644 --- a/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php +++ b/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php @@ -60,6 +60,11 @@ final class ClassRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor throw new ShouldNotHappenException(); } + $virtualNode = $phpParserNode->getAttribute(AttributeKey::VIRTUAL_NODE); + if ($virtualNode === true) { + return null; + } + $identifier = clone $node; $namespacedName = $this->resolveNamespacedName($phpParserNode, $identifier->name); diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/do_not_rename_docblock_inner_namespace.php.inc b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/do_not_rename_docblock_inner_namespace.php.inc new file mode 100644 index 00000000000..a62379fd565 --- /dev/null +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/do_not_rename_docblock_inner_namespace.php.inc @@ -0,0 +1,58 @@ +storage = $storage; + } + + private function foo(): string + { + new Foo($this->storage); + } +} + +?> +----- +storage = $storage; + } + + private function foo(): string + { + new Foo($this->storage); + } +} + +?> diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/config/auto_import_names.php b/rules-tests/Renaming/Rector/Name/RenameClassRector/config/auto_import_names.php index a786e65f9d6..9a48d6a2cd9 100644 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/config/auto_import_names.php +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/config/auto_import_names.php @@ -15,5 +15,6 @@ return static function (RectorConfig $rectorConfig): void { $rectorConfig->ruleWithConfiguration(RenameClassRector::class, [ OldClass::class => NewClass::class, SomeServiceClassFirstNamespace::class => SomeServiceClass::class, + 'Storage' => 'Illuminate\Support\Facades\Storage', ]); };