diff --git a/rules/coding-style/src/Rector/Use_/RemoveUnusedAliasRector.php b/rules/coding-style/src/Rector/Use_/RemoveUnusedAliasRector.php index 84b3fe06fd4b..e827df09af6c 100644 --- a/rules/coding-style/src/Rector/Use_/RemoveUnusedAliasRector.php +++ b/rules/coding-style/src/Rector/Use_/RemoveUnusedAliasRector.php @@ -5,8 +5,8 @@ namespace Rector\CodingStyle\Rector\Use_; use PhpParser\Node; +use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Name; -use PhpParser\Node\Param; use PhpParser\Node\Stmt\Use_; use PhpParser\Node\Stmt\UseUse; use Rector\CodingStyle\Naming\NameRenamer; @@ -140,7 +140,7 @@ public function refactor(Node $node): ?Node /** @var string $aliasName */ $aliasName = $this->getName($use->alias); - if ($this->shouldSkip($lastName, $aliasName)) { + if ($this->shouldSkip($node, $use->name, $lastName, $aliasName)) { continue; } @@ -188,7 +188,7 @@ private function lowercaseArray(array $values): array }, $values); } - private function shouldSkip(string $lastName, string $aliasName): bool + private function shouldSkip(Use_ $use, Name $name, string $lastName, string $aliasName): bool { // PHP is case insensitive $loweredLastName = strtolower($lastName); @@ -200,7 +200,21 @@ private function shouldSkip(string $lastName, string $aliasName): bool } // part of some @Doc annotation - return in_array($loweredAliasName, $this->resolvedDocPossibleAliases, true); + if (in_array($loweredAliasName, $this->resolvedDocPossibleAliases, true)) { + return true; + } + + return (bool) $this->betterNodeFinder->findFirstNext($use, function (Node $node) use ($name): bool { + if (! $node instanceof ClassConstFetch) { + return false; + } + + if (! $node->class instanceof Name) { + return false; + } + + return $node->class->toString() === $name->toString(); + }); } private function refactorAliasName(string $aliasName, string $lastName, UseUse $useUse): void diff --git a/rules/coding-style/tests/Rector/Use_/RemoveUnusedAliasRector/Fixture/skip_used_in_class_constant.php.inc b/rules/coding-style/tests/Rector/Use_/RemoveUnusedAliasRector/Fixture/skip_used_in_class_constant.php.inc new file mode 100644 index 000000000000..549b4e66f6f0 --- /dev/null +++ b/rules/coding-style/tests/Rector/Use_/RemoveUnusedAliasRector/Fixture/skip_used_in_class_constant.php.inc @@ -0,0 +1,12 @@ + 'bar', + ]; +} \ No newline at end of file