From 5980d06d273e76810c5e8adcc01625175b24d881 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 19 Nov 2023 03:14:20 +0000 Subject: [PATCH] Updated Rector to commit 13284c60485e972ef72bf234b3c014c5f89e0d14 https://github.com/rectorphp/rector-src/commit/13284c60485e972ef72bf234b3c014c5f89e0d14 [Renaming][Performance] Re-structure check namespace only on renamed node got Namespace_ (#5265) --- .../Rector/Name/RenameClassRector.php | 36 ++++++++++++++----- src/Application/VersionResolver.php | 4 +-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/rules/Renaming/Rector/Name/RenameClassRector.php b/rules/Renaming/Rector/Name/RenameClassRector.php index 36ee54569f2..e8a78449be5 100644 --- a/rules/Renaming/Rector/Name/RenameClassRector.php +++ b/rules/Renaming/Rector/Name/RenameClassRector.php @@ -36,11 +36,24 @@ final class RenameClassRector extends AbstractRector implements ConfigurableRect * @var \Rector\Renaming\NodeManipulator\ClassRenamer */ private $classRenamer; + /** + * @var bool + */ + private $isMayRequireRestructureNamespace = \false; public function __construct(RenamedClassesDataCollector $renamedClassesDataCollector, ClassRenamer $classRenamer) { $this->renamedClassesDataCollector = $renamedClassesDataCollector; $this->classRenamer = $classRenamer; } + /** + * @param Node[] $nodes + * @return Node[]|null + */ + public function beforeTraverse(array $nodes) : ?array + { + $this->isMayRequireRestructureNamespace = \false; + return parent::beforeTraverse($nodes); + } public function getRuleDefinition() : RuleDefinition { return new RuleDefinition('Replaces defined classes by new ones.', [new ConfiguredCodeSample(<<<'CODE_SAMPLE' @@ -84,7 +97,11 @@ CODE_SAMPLE $oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses(); if ($oldToNewClasses !== []) { $scope = $node->getAttribute(AttributeKey::SCOPE); - return $this->classRenamer->renameNode($node, $oldToNewClasses, $scope); + $renameNode = $this->classRenamer->renameNode($node, $oldToNewClasses, $scope); + if ($renameNode instanceof Namespace_) { + $this->isMayRequireRestructureNamespace = \true; + } + return $renameNode; } return null; } @@ -103,18 +120,21 @@ CODE_SAMPLE */ public function afterTraverse(array $nodes) : ?array { + if (!$this->isMayRequireRestructureNamespace) { + return parent::afterTraverse($nodes); + } foreach ($nodes as $node) { if ($node instanceof Namespace_) { return parent::afterTraverse($nodes); } - if ($node instanceof FileWithoutNamespace) { - foreach ($node->stmts as $stmt) { - if ($stmt instanceof Namespace_) { - $this->restructureUnderNamespace($node); - return $node->stmts; - } + if (!$node instanceof FileWithoutNamespace) { + continue; + } + foreach ($node->stmts as $stmt) { + if ($stmt instanceof Namespace_) { + $this->restructureUnderNamespace($node); + return $node->stmts; } - return parent::afterTraverse($nodes); } } return parent::afterTraverse($nodes); diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 956e77ebc69..a785868c651 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 = 'e43a1cec56310b6762eb0b56d18f60402d5fd652'; + public const PACKAGE_VERSION = '13284c60485e972ef72bf234b3c014c5f89e0d14'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-11-19 09:53:05'; + public const RELEASE_DATE = '2023-11-19 10:12:03'; /** * @var int */