From baa0c1519037c0bfad536c52ec7ede499b74864f Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 16 Oct 2023 07:38:49 +0000 Subject: [PATCH] Updated Rector to commit d22e71ec0196d8f0f363845db83e064b471cb07e https://github.com/rectorphp/rector-src/commit/d22e71ec0196d8f0f363845db83e064b471cb07e Revert rename + auto import remove use tweak (#5179) --- .../Application/PostFileProcessor.php | 18 ++++++++---- .../Rector/ClassRenamingPostRector.php | 28 ++----------------- .../Application/UseImportsRemover.php | 23 ++++----------- ...UnusedNonEmptyArrayBeforeForeachRector.php | 2 +- src/Application/VersionResolver.php | 4 +-- 5 files changed, 22 insertions(+), 53 deletions(-) diff --git a/packages/PostRector/Application/PostFileProcessor.php b/packages/PostRector/Application/PostFileProcessor.php index 46049c981bf..2b45ebfb578 100644 --- a/packages/PostRector/Application/PostFileProcessor.php +++ b/packages/PostRector/Application/PostFileProcessor.php @@ -23,17 +23,23 @@ final class PostFileProcessor * @var PostRectorInterface[] */ private $postRectors = []; - public function __construct(Skipper $skipper, NameImportingPostRector $nameImportingPostRector, UseAddingPostRector $useAddingPostRector, ClassRenamingPostRector $classRenamingPostRector, UnusedImportRemovingPostRector $unusedImportRemovingPostRector) + public function __construct( + Skipper $skipper, + // set order here + UseAddingPostRector $useAddingPostRector, + NameImportingPostRector $nameImportingPostRector, + ClassRenamingPostRector $classRenamingPostRector, + UnusedImportRemovingPostRector $unusedImportRemovingPostRector + ) { $this->skipper = $skipper; - // set order here $this->postRectors = [ // priority: 650 - $nameImportingPostRector, - // priority: 600 - $useAddingPostRector, - // priority: 500 $classRenamingPostRector, + // priority: 600 + $nameImportingPostRector, + // priority: 500 + $useAddingPostRector, // priority: 100 $unusedImportRemovingPostRector, ]; diff --git a/packages/PostRector/Rector/ClassRenamingPostRector.php b/packages/PostRector/Rector/ClassRenamingPostRector.php index 4455276d110..7f816514849 100644 --- a/packages/PostRector/Rector/ClassRenamingPostRector.php +++ b/packages/PostRector/Rector/ClassRenamingPostRector.php @@ -15,10 +15,7 @@ use Rector\Core\Configuration\Option; use Rector\Core\Configuration\Parameter\SimpleParameterProvider; use Rector\Core\Configuration\RenamedClassesDataCollector; 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 { @@ -37,27 +34,15 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo * @var \Rector\CodingStyle\Application\UseImportsRemover */ private $useImportsRemover; - /** - * @readonly - * @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, UseNodesToAddCollector $useNodesToAddCollector) + public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollector $renamedClassesDataCollector, UseImportsRemover $useImportsRemover) { $this->classRenamer = $classRenamer; $this->renamedClassesDataCollector = $renamedClassesDataCollector; $this->useImportsRemover = $useImportsRemover; - $this->currentFileProvider = $currentFileProvider; - $this->useNodesToAddCollector = $useNodesToAddCollector; } /** * @param Stmt[] $nodes @@ -94,17 +79,8 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo if (!$this->rootNode instanceof FileWithoutNamespace && !$this->rootNode instanceof Namespace_) { return $result; } - $file = $this->currentFileProvider->getFile(); - if (!$file instanceof File) { - return $result; - } - $useImportTypes = $this->useNodesToAddCollector->getObjectImportsByFilePath($file->getFilePath()); - // nothing to remove, as no replacement - if ($useImportTypes === []) { - return $result; - } $removedUses = $this->renamedClassesDataCollector->getOldClasses(); - $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses, $useImportTypes); + $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses); return $result; } } diff --git a/rules/CodingStyle/Application/UseImportsRemover.php b/rules/CodingStyle/Application/UseImportsRemover.php index 9090cbd01fe..0315d9f2284 100644 --- a/rules/CodingStyle/Application/UseImportsRemover.php +++ b/rules/CodingStyle/Application/UseImportsRemover.php @@ -3,26 +3,22 @@ declare (strict_types=1); namespace Rector\CodingStyle\Application; -use RectorPrefix202310\Nette\Utils\Strings; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Use_; -use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; -use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class UseImportsRemover { /** * @param Stmt[] $stmts * @param string[] $removedUses - * @param AliasedObjectType[]|FullyQualifiedObjectType[] $useImportTypes * @return Stmt[] */ - public function removeImportsFromStmts(array $stmts, array $removedUses, array $useImportTypes) : array + public function removeImportsFromStmts(array $stmts, array $removedUses) : array { foreach ($stmts as $key => $stmt) { if (!$stmt instanceof Use_) { continue; } - $stmt = $this->removeUseFromUse($removedUses, $stmt, $useImportTypes); + $stmt = $this->removeUseFromUse($removedUses, $stmt); // remove empty uses if ($stmt->uses === []) { unset($stmts[$key]); @@ -32,22 +28,13 @@ final class UseImportsRemover } /** * @param string[] $removedUses - * @param AliasedObjectType[]|FullyQualifiedObjectType[] $useImportTypes */ - private function removeUseFromUse(array $removedUses, Use_ $use, array $useImportTypes) : Use_ + private function removeUseFromUse(array $removedUses, Use_ $use) : Use_ { foreach ($use->uses as $usesKey => $useUse) { $useName = $useUse->name->toString(); - if (!\in_array($useName, $removedUses, \true)) { - continue; - } - $lastUseName = Strings::after($useName, '\\', -1); - foreach ($useImportTypes as $useImportType) { - $className = $useImportType instanceof AliasedObjectType ? $useImportType->getFullyQualifiedName() : $useImportType->getClassName(); - if ($className === $useName || Strings::after($className, '\\', -1) === $lastUseName) { - unset($use->uses[$usesKey]); - continue 2; - } + if (\in_array($useName, $removedUses, \true)) { + unset($use->uses[$usesKey]); } } return $use; diff --git a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php index ae7e9dcc2c2..8ef7aaea897 100644 --- a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php +++ b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php @@ -3,9 +3,9 @@ declare (strict_types=1); namespace Rector\DeadCode\Rector\If_; +use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node; use PhpParser\Node\Expr; -use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\BinaryOp\BooleanAnd; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Stmt; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 72452a0e69f..a3e845dd28d 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 = 'cd0c14e144f4d4ef35b4cd42751981c40023879a'; + public const PACKAGE_VERSION = 'd22e71ec0196d8f0f363845db83e064b471cb07e'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-10-16 11:15:50'; + public const RELEASE_DATE = '2023-10-16 07:36:04'; /** * @var int */