Skip to content

Commit 5d1a9e0

Browse files
committed
[AutoImport] Allow on FQCN current same class (part 2)
1 parent ed8e4d3 commit 5d1a9e0

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
namespace Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter;
66

77
use PhpParser\Node;
8+
use PHPStan\Analyser\Scope;
89
use Rector\CodingStyle\ClassNameImport\ShortNameResolver;
910
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
11+
use Rector\NodeTypeResolver\Node\AttributeKey;
1012
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
1113
use Rector\ValueObject\Application\File;
1214

@@ -33,9 +35,25 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO
3335
return false;
3436
}
3537

38+
$scope = $node->getAttribute(AttributeKey::SCOPE);
39+
$namespace = $scope instanceof Scope ? $scope->getNamespace() : null;
40+
$namespace = strtolower((string) $namespace);
41+
3642
$shortNameLowered = $fullyQualifiedObjectType->getShortNameLowered();
43+
$fullyQualifiedObjectTypeNamespace = strtolower(
44+
substr($fullyQualifiedObjectType->getClassName(), 0, -strlen($fullyQualifiedObjectType->getShortName()) - 1)
45+
);
46+
3747
foreach ($classLikeNames as $classLikeName) {
38-
if (strtolower($classLikeName) === $shortNameLowered) {
48+
if (strtolower($classLikeName) !== $shortNameLowered) {
49+
continue;
50+
}
51+
52+
if ($namespace === '') {
53+
return true;
54+
}
55+
56+
if ($namespace !== $fullyQualifiedObjectTypeNamespace) {
3957
return true;
4058
}
4159
}

0 commit comments

Comments
 (0)