Make ClassRenamer use UseImportsResolver (#2160)

This commit is contained in:
Tomas Votruba 2022-04-25 10:26:35 +02:00 committed by GitHub
parent 2447c3155b
commit 57b835b5d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -28,6 +28,7 @@ use Rector\CodingStyle\Naming\ClassNaming;
use Rector\Core\Configuration\Option;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\ValueObject\Application\File;
use Rector\Naming\Naming\UseImportsResolver;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeRemoval\NodeRemover;
use Rector\NodeTypeResolver\Node\AttributeKey;
@ -54,7 +55,8 @@ final class ClassRenamer
private readonly DocBlockClassRenamer $docBlockClassRenamer,
private readonly ReflectionProvider $reflectionProvider,
private readonly NodeRemover $nodeRemover,
private readonly ParameterProvider $parameterProvider
private readonly ParameterProvider $parameterProvider,
private readonly UseImportsResolver $useImportsResolver,
) {
}
@ -413,14 +415,13 @@ final class ClassRenamer
private function isValidUseImportChange(string $newName, UseUse $useUse): bool
{
/** @var Use_[]|null $useNodes */
$useNodes = $useUse->getAttribute(AttributeKey::USE_NODES);
if ($useNodes === null) {
$uses = $this->useImportsResolver->resolveForNode($useUse);
if ($uses === []) {
return true;
}
foreach ($useNodes as $useNode) {
if ($this->nodeNameResolver->isName($useNode, $newName)) {
foreach ($uses as $use) {
if ($this->nodeNameResolver->isName($use, $newName)) {
// name already exists
return false;
}