Updated Rector to commit a9908f6498004953531a1a145a4e271fa953a3c7

a9908f6498 [PostRector] Reduce loop on ClassRenamingPostRector (#5174)
This commit is contained in:
Tomas Votruba 2023-10-15 04:45:43 +00:00
parent 3f64ea0f3f
commit b3f3d77384
3 changed files with 18 additions and 20 deletions

View File

@ -18,6 +18,7 @@ use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\Core\Provider\CurrentFileProvider;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\Renaming\NodeManipulator\ClassRenamer;
final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPostRector
{
@ -41,16 +42,22 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo
* @var \Rector\Core\Provider\CurrentFileProvider
*/
private $currentFileProvider;
/**
* @readonly
* @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/
private $useNodesToAddCollector;
/**
* @var \Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_|null
*/
private $rootNode = null;
public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollector $renamedClassesDataCollector, UseImportsRemover $useImportsRemover, CurrentFileProvider $currentFileProvider)
public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollector $renamedClassesDataCollector, UseImportsRemover $useImportsRemover, CurrentFileProvider $currentFileProvider, UseNodesToAddCollector $useNodesToAddCollector)
{
$this->classRenamer = $classRenamer;
$this->renamedClassesDataCollector = $renamedClassesDataCollector;
$this->useImportsRemover = $useImportsRemover;
$this->currentFileProvider = $currentFileProvider;
$this->useNodesToAddCollector = $useNodesToAddCollector;
}
/**
* @param Stmt[] $nodes
@ -91,8 +98,13 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo
if (!$file instanceof File) {
return null;
}
$useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($file->getFilePath());
// nothing to remove, as no replacement
if ($useImportTypes === []) {
return null;
}
$removedUses = $this->renamedClassesDataCollector->getOldClasses();
$this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses, $file->getFilePath());
$this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses, $useImportTypes);
return $result;
}
}

View File

@ -6,28 +6,18 @@ namespace Rector\CodingStyle\Application;
use RectorPrefix202310\Nette\Utils\Strings;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Use_;
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
final class UseImportsRemover
{
/**
* @readonly
* @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/
private $useNodesToAddCollector;
public function __construct(UseNodesToAddCollector $useNodesToAddCollector)
{
$this->useNodesToAddCollector = $useNodesToAddCollector;
}
/**
* @param Stmt[] $stmts
* @param string[] $removedUses
* @param AliasedObjectType[]|FullyQualifiedObjectType[] $useImportTypes
* @return Stmt[]
*/
public function removeImportsFromStmts(array $stmts, array $removedUses, string $filePath) : array
public function removeImportsFromStmts(array $stmts, array $removedUses, array $useImportTypes) : array
{
$useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($filePath);
foreach ($stmts as $key => $stmt) {
if (!$stmt instanceof Use_) {
continue;
@ -46,10 +36,6 @@ final class UseImportsRemover
*/
private function removeUseFromUse(array $removedUses, Use_ $use, array $useImportTypes) : Use_
{
// nothing to remove, as no replacement
if ($useImportTypes === []) {
return $use;
}
foreach ($use->uses as $usesKey => $useUse) {
$useName = $useUse->name->toString();
if (!\in_array($useName, $removedUses, \true)) {

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'c5d3a0e1913fb0057513dd70122d8eef4d226e1c';
public const PACKAGE_VERSION = 'a9908f6498004953531a1a145a4e271fa953a3c7';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-10-15 11:03:12';
public const RELEASE_DATE = '2023-10-15 11:42:48';
/**
* @var int
*/