From b3f3d773849baa308aa9dff9a463a74d9509c3ab Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 15 Oct 2023 04:45:43 +0000 Subject: [PATCH] Updated Rector to commit a9908f6498004953531a1a145a4e271fa953a3c7 https://github.com/rectorphp/rector-src/commit/a9908f6498004953531a1a145a4e271fa953a3c7 [PostRector] Reduce loop on ClassRenamingPostRector (#5174) --- .../Rector/ClassRenamingPostRector.php | 16 ++++++++++++++-- .../Application/UseImportsRemover.php | 18 ++---------------- src/Application/VersionResolver.php | 4 ++-- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/packages/PostRector/Rector/ClassRenamingPostRector.php b/packages/PostRector/Rector/ClassRenamingPostRector.php index e49e910c3a3..c59b04c23f1 100644 --- a/packages/PostRector/Rector/ClassRenamingPostRector.php +++ b/packages/PostRector/Rector/ClassRenamingPostRector.php @@ -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; } } diff --git a/rules/CodingStyle/Application/UseImportsRemover.php b/rules/CodingStyle/Application/UseImportsRemover.php index bb3a83ffb1c..9090cbd01fe 100644 --- a/rules/CodingStyle/Application/UseImportsRemover.php +++ b/rules/CodingStyle/Application/UseImportsRemover.php @@ -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)) { diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index b76fabd1326..c21ec0a8214 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -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 */