Skip to content

Commit

Permalink
[[Performance]AutoImport] Reduce double loop on ClassNameImportSkipper (
Browse files Browse the repository at this point in the history
  • Loading branch information
samsonasik committed Oct 2, 2023
1 parent 9e4616b commit c9e0823
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 38 deletions.
18 changes: 1 addition & 17 deletions packages/PostRector/Rector/NameImportingPostRector.php
Expand Up @@ -104,7 +104,7 @@ private function processNodeName(Name $name, File $file): ?Node
/** @var Use_[]|GroupUse[] $currentUses */
$currentUses = $this->useImportsResolver->resolve();

if ($this->shouldImportName($name, $currentUses)) {
if ($this->classNameImportSkipper->shouldImportName($name, $currentUses)) {
$nameInUse = $this->resolveNameInUse($name, $currentUses);

if ($nameInUse instanceof FullyQualified) {
Expand Down Expand Up @@ -192,20 +192,4 @@ private function resolveConflictedShortNameInUse(Name $name, array $currentUses)

return null;
}

/**
* @param Use_[]|GroupUse[] $currentUses
*/
private function shouldImportName(Name $name, array $currentUses): bool
{
if (substr_count($name->toCodeString(), '\\') <= 1) {
return true;
}

if (! $this->classNameImportSkipper->isFoundInUse($name, $currentUses)) {
return true;
}

return $this->classNameImportSkipper->isAlreadyImported($name, $currentUses);
}
}
26 changes: 5 additions & 21 deletions rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php
Expand Up @@ -44,28 +44,12 @@ public function shouldSkipNameForFullyQualifiedObjectType(
/**
* @param Use_[]|GroupUse[] $uses
*/
public function isAlreadyImported(Name $name, array $uses): bool
public function shouldImportName(Name $name, array $uses): bool
{
$stringName = $name->toString();

foreach ($uses as $use) {
$prefix = $this->useImportsResolver->resolvePrefix($use);

foreach ($use->uses as $useUse) {
if ($prefix . $useUse->name->toString() === $stringName) {
return true;
}
}
if (substr_count($name->toCodeString(), '\\') <= 1) {
return true;
}

return false;
}

/**
* @param Use_[]|GroupUse[] $uses
*/
public function isFoundInUse(Name $name, array $uses): bool
{
$stringName = $name->toString();
$nameLastName = strtolower($name->getLast());

Expand All @@ -83,11 +67,11 @@ public function isFoundInUse(Name $name, array $uses): bool
continue;
}

return true;
return $prefix . $useUse->name->toString() === $stringName;
}
}

return false;
return true;
}

private function isJustRenamedClass(string $stringName, string $prefix, UseUse $useUse): bool
Expand Down

0 comments on commit c9e0823

Please sign in to comment.