Updated Rector to commit 13284c60485e972ef72bf234b3c014c5f89e0d14

13284c6048 [Renaming][Performance] Re-structure check namespace only on renamed node got Namespace_ (#5265)
This commit is contained in:
Tomas Votruba 2023-11-19 03:14:20 +00:00
parent 318c07bf9f
commit 5980d06d27
2 changed files with 30 additions and 10 deletions

View File

@ -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);

View File

@ -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
*/