diff --git a/packages/NodeRemoval/AssignRemover.php b/packages/NodeRemoval/AssignRemover.php index 6c70922d7bc..65ae18b5bde 100644 --- a/packages/NodeRemoval/AssignRemover.php +++ b/packages/NodeRemoval/AssignRemover.php @@ -30,9 +30,14 @@ public function removeAssignNode(Assign $assign): void $parent = $assign->getAttribute(AttributeKey::PARENT_NODE); if ($parent instanceof Expression) { $this->nodeRemover->removeNode($assign); - } else { - $this->nodesToReplaceCollector->addReplaceNodeWithAnotherNode($assign, $assign->expr); - $this->rectorChangeCollector->notifyNodeFileInfo($assign->expr); + return; + } + + $this->nodesToReplaceCollector->addReplaceNodeWithAnotherNode($assign, $assign->expr); + $this->rectorChangeCollector->notifyNodeFileInfo($assign->expr); + + if ($parent instanceof Assign) { + $this->removeAssignNode($parent); } } } diff --git a/rules/DeadCode/NodeAnalyzer/ExprUsedInNextNodeAnalyzer.php b/rules/DeadCode/NodeAnalyzer/ExprUsedInNextNodeAnalyzer.php index 1ee4345d782..1132572dfbb 100644 --- a/rules/DeadCode/NodeAnalyzer/ExprUsedInNextNodeAnalyzer.php +++ b/rules/DeadCode/NodeAnalyzer/ExprUsedInNextNodeAnalyzer.php @@ -6,10 +6,7 @@ use PhpParser\Node; use PhpParser\Node\Expr; -use PhpParser\Node\Stmt\If_; use Rector\Core\PhpParser\Node\BetterNodeFinder; -use Rector\EarlyReturn\Rector\If_\RemoveAlwaysElseRector; -use Rector\NodeTypeResolver\Node\AttributeKey; final class ExprUsedInNextNodeAnalyzer { @@ -23,24 +20,7 @@ public function isUsed(Expr $expr): bool { return (bool) $this->betterNodeFinder->findFirstNext( $expr, - function (Node $node) use ($expr): bool { - $isUsed = $this->exprUsedInNodeAnalyzer->isUsed($node, $expr); - - if ($isUsed) { - return true; - } - - /** - * handle when used along with RemoveAlwaysElseRector - */ - return $node instanceof If_ && $this->hasIfChangedByRemoveAlwaysElseRector($node); - } + fn (Node $node): bool => $this->exprUsedInNodeAnalyzer->isUsed($node, $expr) ); } - - private function hasIfChangedByRemoveAlwaysElseRector(If_ $if): bool - { - $createdByRule = $if->getAttribute(AttributeKey::CREATED_BY_RULE) ?? []; - return in_array(RemoveAlwaysElseRector::class, $createdByRule, true); - } } diff --git a/src/ProcessAnalyzer/RectifiedAnalyzer.php b/src/ProcessAnalyzer/RectifiedAnalyzer.php index 8f49e6510e8..ec91355e912 100644 --- a/src/ProcessAnalyzer/RectifiedAnalyzer.php +++ b/src/ProcessAnalyzer/RectifiedAnalyzer.php @@ -5,7 +5,6 @@ namespace Rector\Core\ProcessAnalyzer; use PhpParser\Node; -use PhpParser\Node\Expr\Assign; use PhpParser\Node\Stmt\Class_; use Rector\Core\Contract\Rector\RectorInterface; use Rector\Core\ValueObject\Application\File; @@ -18,17 +17,12 @@ * * Limitation: * - * It only check against Node which not Assign or Class_ + * It only check against Node which not a Class_ * * which possibly changed by other process. */ final class RectifiedAnalyzer { - /** - * @var array> - */ - private const EXCLUDE_NODES = [Assign::class, Class_::class]; - /** * @var array */ @@ -36,7 +30,7 @@ final class RectifiedAnalyzer public function verify(RectorInterface $rector, Node $node, File $currentFile): ?RectifiedNode { - if (in_array($node::class, self::EXCLUDE_NODES, true)) { + if ($node instanceof Class_) { return null; }