From 8c0d2ca2c64e6434d81212b2c67bde69530c8d27 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 17 Oct 2026 20:57:52 +0200 Subject: [PATCH] read short names map through ClassNameImportContext in FullyQualifiedName skip voter --- .../ClassNameImport/ClassNameImportContext.php | 13 ++++++++++++- .../FullyQualifiedNameClassNameImportSkipVoter.php | 7 +++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportContext.php b/rules/CodingStyle/ClassNameImport/ClassNameImportContext.php index 7bf3d1562e7..9063af376a4 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportContext.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportContext.php @@ -32,10 +32,21 @@ final class ClassNameImportContext private array $usedImportTypes = []; public function __construct( - private readonly AliasUsesResolver $aliasUsesResolver + private readonly AliasUsesResolver $aliasUsesResolver, + private readonly ShortNameResolver $shortNameResolver ) { } + /** + * Short names actually used in the file (class-likes, names, docblock types) mapped to their FQN + * + * @return array + */ + public function resolveShortNamesToFullyQualifiedNames(File $file): array + { + return $this->shortNameResolver->resolveFromFile($file); + } + /** * @return string[] */ diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php index 3cc572e64df..c41a004265c 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php @@ -6,7 +6,7 @@ use Nette\Utils\Strings; use PhpParser\Node; -use Rector\CodingStyle\ClassNameImport\ShortNameResolver; +use Rector\CodingStyle\ClassNameImport\ClassNameImportContext; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\ValueObject\Application\File; @@ -23,15 +23,14 @@ final readonly class FullyQualifiedNameClassNameImportSkipVoter implements ClassNameImportSkipVoterInterface { public function __construct( - private ShortNameResolver $shortNameResolver + private ClassNameImportContext $classNameImportContext ) { } public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedObjectType, Node $node): bool { // "new X" or "X::static()" - /** @var array $shortNamesToFullyQualifiedNames */ - $shortNamesToFullyQualifiedNames = $this->shortNameResolver->resolveFromFile($file); + $shortNamesToFullyQualifiedNames = $this->classNameImportContext->resolveShortNamesToFullyQualifiedNames($file); $fullyQualifiedObjectTypeShortName = $fullyQualifiedObjectType->getShortName(); $className = $fullyQualifiedObjectType->getClassName();