diff --git a/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php b/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php index 4438b5dfd00..fe0a16c5fc9 100644 --- a/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php +++ b/src/PhpParser/NodeTraverser/AbstractImmutableNodeTraverser.php @@ -99,11 +99,10 @@ protected function traverseNode(Node $node): void } $traverseChildren = true; - $visitorIndex = -1; $currentNodeVisitors = $this->getVisitorsForNode($subNode); - foreach ($currentNodeVisitors as $visitorIndex => $visitor) { - $return = $visitor->enterNode($subNode); + foreach ($currentNodeVisitors as $currentNodeVisitor) { + $return = $currentNodeVisitor->enterNode($subNode); if ($return !== null) { if ($return instanceof Node) { $originalSubNodeClass = $subNode::class; @@ -140,30 +139,6 @@ protected function traverseNode(Node $node): void break; } } - - for (; $visitorIndex >= 0; --$visitorIndex) { - $visitor = $currentNodeVisitors[$visitorIndex]; - $return = $visitor->leaveNode($subNode); - if ($return !== null) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($subNode, $return); - $subNode = $return; - $node->{$name} = $return; - } elseif ($return === NodeVisitor::STOP_TRAVERSAL) { - $this->stopTraversal = true; - break 2; - } elseif ($return === NodeVisitor::REPLACE_WITH_NULL) { - $node->{$name} = null; - break; - } elseif (\is_array($return)) { - throw new LogicException( - 'leaveNode() may only return an array if the parent structure is an array' - ); - } else { - throw new LogicException('leaveNode() returned invalid value of type ' . gettype($return)); - } - } - } } } @@ -184,11 +159,10 @@ protected function traverseArray(array $nodes): array } $traverseChildren = true; - $visitorIndex = -1; $currentNodeVisitors = $this->getVisitorsForNode($node); - foreach ($currentNodeVisitors as $visitorIndex => $visitor) { - $return = $visitor->enterNode($node); + foreach ($currentNodeVisitors as $currentNodeVisitor) { + $return = $currentNodeVisitor->enterNode($node); if ($return !== null) { if ($return instanceof Node) { $originalNodeNodeClass = $node::class; @@ -229,32 +203,6 @@ protected function traverseArray(array $nodes): array break; } } - - for (; $visitorIndex >= 0; --$visitorIndex) { - $visitor = $currentNodeVisitors[$visitorIndex]; - $return = $visitor->leaveNode($node); - if ($return !== null) { - if ($return instanceof Node) { - $this->ensureReplacementReasonable($node, $return); - $nodes[$i] = $node = $return; - } elseif (\is_array($return)) { - $doNodes[] = [$i, $return]; - break; - } elseif ($return === NodeVisitor::REMOVE_NODE) { - $doNodes[] = [$i, []]; - break; - } elseif ($return === NodeVisitor::STOP_TRAVERSAL) { - $this->stopTraversal = true; - break 2; - } elseif ($return === NodeVisitor::REPLACE_WITH_NULL) { - throw new LogicException( - 'REPLACE_WITH_NULL can not be used if the parent structure is an array' - ); - } else { - throw new LogicException('leaveNode() returned invalid value of type ' . gettype($return)); - } - } - } } if ($doNodes !== []) {