From c5d3a0e1913fb0057513dd70122d8eef4d226e1c Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 15 Oct 2023 11:03:12 +0700 Subject: [PATCH] [CodingStyle] Clean up check last name on UseImportsRemover (#5173) * [CodingStyle] Clean up check last name on UseImportsRemover * [CodingStyle] Clean up check last name on UseImportsRemover * fix phpstan --- .../PostRector/Rector/ClassRenamingPostRector.php | 6 +++++- .../RenameClassRector/config/auto_import_names.php | 1 - rules/CodingStyle/Application/UseImportsRemover.php | 12 ++++++------ .../RemoveUnusedNonEmptyArrayBeforeForeachRector.php | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/PostRector/Rector/ClassRenamingPostRector.php b/packages/PostRector/Rector/ClassRenamingPostRector.php index 7dbbcece2c7..8feddf0ae32 100644 --- a/packages/PostRector/Rector/ClassRenamingPostRector.php +++ b/packages/PostRector/Rector/ClassRenamingPostRector.php @@ -82,7 +82,11 @@ public function enterNode(Node $node): ?Node } $removedUses = $this->renamedClassesDataCollector->getOldClasses(); - $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses, $file->getFilePath()); + $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts( + $this->rootNode->stmts, + $removedUses, + $file->getFilePath() + ); return $result; } 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 f0b55e7f09e..1885911dee4 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 @@ -21,7 +21,6 @@ 'Queue' => 'Illuminate\Support\Facades\Queue', /** - * * For testing skip remove use statement part of rename during auto import * the rename annotation is allowed only on specific symfony assert, doctrine, and serializer * diff --git a/rules/CodingStyle/Application/UseImportsRemover.php b/rules/CodingStyle/Application/UseImportsRemover.php index c5f93bf5e8d..3c80e4dd790 100644 --- a/rules/CodingStyle/Application/UseImportsRemover.php +++ b/rules/CodingStyle/Application/UseImportsRemover.php @@ -4,6 +4,7 @@ namespace Rector\CodingStyle\Application; +use Nette\Utils\Strings; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Use_; use Rector\PostRector\Collector\UseNodesToAddCollector; @@ -12,9 +13,9 @@ final class UseImportsRemover { - public function __construct(private readonly UseNodesToAddCollector $useNodesToAddCollector) - { - + public function __construct( + private readonly UseNodesToAddCollector $useNodesToAddCollector + ) { } /** @@ -59,18 +60,17 @@ private function removeUseFromUse(array $removedUses, Use_ $use, array $useImpor continue; } + $lastUseName = Strings::after($useName, '\\', -1); foreach ($useImportTypes as $useImportType) { $className = $useImportType instanceof AliasedObjectType ? $useImportType->getFullyQualifiedName() : $useImportType->getClassName(); - if ($className === $useName) { + if ($className === $useName || Strings::after($className, '\\', -1) === $lastUseName) { unset($use->uses[$usesKey]); continue 2; } } - - unset($use->uses[$usesKey]); } return $use; diff --git a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php index 476a2f32e1a..860466f09e7 100644 --- a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php +++ b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php @@ -4,9 +4,9 @@ namespace Rector\DeadCode\Rector\If_; -use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node; use PhpParser\Node\Expr; +use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\BinaryOp\BooleanAnd; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Stmt;