diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php index a25a536c304..9740070b391 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php @@ -6,10 +6,11 @@ use Nette\Utils\Strings; use PhpParser\Node; +use PhpParser\Node\Name\FullyQualified; use Rector\CodingStyle\ClassNameImport\ShortNameResolver; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\Core\Configuration\RenamedClassesDataCollector; use Rector\Core\ValueObject\Application\File; +use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** @@ -24,8 +25,7 @@ final class FullyQualifiedNameClassNameImportSkipVoter implements ClassNameImportSkipVoterInterface { public function __construct( - private readonly ShortNameResolver $shortNameResolver, - private readonly RenamedClassesDataCollector $renamedClassesDataCollector + private readonly ShortNameResolver $shortNameResolver ) { } @@ -34,9 +34,9 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO // "new X" or "X::static()" /** @var array $shortNamesToFullyQualifiedNames */ $shortNamesToFullyQualifiedNames = $this->shortNameResolver->resolveFromFile($file); - $removedUses = $this->renamedClassesDataCollector->getOldClasses(); $fullyQualifiedObjectTypeShortName = $fullyQualifiedObjectType->getShortName(); $className = $fullyQualifiedObjectType->getClassName(); + $justRenamed = $node instanceof FullyQualified && ! $node->hasAttribute(AttributeKey::ORIGINAL_NAME); foreach ($shortNamesToFullyQualifiedNames as $shortName => $fullyQualifiedName) { if ($fullyQualifiedObjectTypeShortName !== $shortName) { @@ -54,11 +54,7 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO return false; } - if (in_array($fullyQualifiedName, $removedUses, true)) { - return false; - } - - return str_contains($fullyQualifiedName, '\\'); + return ! $justRenamed; } return false; diff --git a/tests/Issues/AutoImport/Fixture/skip_no_namespace_used_class.php.inc b/tests/Issues/AutoImport/Fixture/skip_no_namespace_used_class.php.inc new file mode 100644 index 00000000000..8fd54c7fa24 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/skip_no_namespace_used_class.php.inc @@ -0,0 +1,10 @@ +