From 9dd4fdf4df496f9ccdb1438d1110293ee41ebae2 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 23 Dec 2025 13:40:58 +0100 Subject: [PATCH 1/4] Simplify FiberNodeScopeResolver --- src/Analyser/Fiber/FiberNodeScopeResolver.php | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/Analyser/Fiber/FiberNodeScopeResolver.php b/src/Analyser/Fiber/FiberNodeScopeResolver.php index 2236f3237f..04017fa140 100644 --- a/src/Analyser/Fiber/FiberNodeScopeResolver.php +++ b/src/Analyser/Fiber/FiberNodeScopeResolver.php @@ -80,6 +80,8 @@ private function runFiberForNodeCallback( protected function processPendingFibers(ExpressionResultStorage $storage): void { + start: + foreach ($storage->pendingFibers as $pending) { $request = $pending['request']; $beforeScope = $storage->findBeforeScope($request->expr); @@ -99,36 +101,31 @@ protected function processPendingFibers(ExpressionResultStorage $storage): void if ($storage->findBeforeScope($request->expr) === null) { throw new ShouldNotHappenException(sprintf('processExprNode should have stored the beforeScope of %s on line %s', get_class($request->expr), $request->expr->getStartLine())); } - $this->processPendingFibers($storage); // Break and restart the loop since the array may have been modified - return; + goto start; } } protected function processPendingFibersForRequestedExpr(ExpressionResultStorage $storage, Expr $expr, Scope $result): void { - $restartLoop = true; - - while ($restartLoop) { - $restartLoop = false; + start: - foreach ($storage->pendingFibers as $key => $pending) { - $request = $pending['request']; - if ($request->expr !== $expr) { - continue; - } + foreach ($storage->pendingFibers as $key => $pending) { + $request = $pending['request']; + if ($request->expr !== $expr) { + continue; + } - unset($storage->pendingFibers[$key]); - $restartLoop = true; + unset($storage->pendingFibers[$key]); + $restartLoop = true; - $fiber = $pending['fiber']; - $request = $fiber->resume($result); - $this->runFiberForNodeCallback($storage, $fiber, $request); + $fiber = $pending['fiber']; + $request = $fiber->resume($result); + $this->runFiberForNodeCallback($storage, $fiber, $request); - // Break and restart the loop since the array may have been modified - break; - } + // Break and restart the loop since the array may have been modified + goto start; } } From d15a227ef8a4e3b2bd6829cd47b1d8de276926ab Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 23 Dec 2025 13:41:44 +0100 Subject: [PATCH 2/4] Update FiberNodeScopeResolver.php --- src/Analyser/Fiber/FiberNodeScopeResolver.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Analyser/Fiber/FiberNodeScopeResolver.php b/src/Analyser/Fiber/FiberNodeScopeResolver.php index 04017fa140..aebb3328ce 100644 --- a/src/Analyser/Fiber/FiberNodeScopeResolver.php +++ b/src/Analyser/Fiber/FiberNodeScopeResolver.php @@ -118,7 +118,6 @@ protected function processPendingFibersForRequestedExpr(ExpressionResultStorage } unset($storage->pendingFibers[$key]); - $restartLoop = true; $fiber = $pending['fiber']; $request = $fiber->resume($result); From d4e5e7379b2c9d29a1bc9fd542be9dfa4777c020 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 23 Dec 2025 13:45:52 +0100 Subject: [PATCH 3/4] Update FiberNodeScopeResolver.php --- src/Analyser/Fiber/FiberNodeScopeResolver.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Analyser/Fiber/FiberNodeScopeResolver.php b/src/Analyser/Fiber/FiberNodeScopeResolver.php index aebb3328ce..b6d6d4eb58 100644 --- a/src/Analyser/Fiber/FiberNodeScopeResolver.php +++ b/src/Analyser/Fiber/FiberNodeScopeResolver.php @@ -80,8 +80,6 @@ private function runFiberForNodeCallback( protected function processPendingFibers(ExpressionResultStorage $storage): void { - start: - foreach ($storage->pendingFibers as $pending) { $request = $pending['request']; $beforeScope = $storage->findBeforeScope($request->expr); @@ -103,7 +101,7 @@ protected function processPendingFibers(ExpressionResultStorage $storage): void } // Break and restart the loop since the array may have been modified - goto start; + return; } } From 5351b04a129092a491dcc61a708ee57e73f38830 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 23 Dec 2025 13:46:15 +0100 Subject: [PATCH 4/4] Revert "Update FiberNodeScopeResolver.php" This reverts commit d4e5e7379b2c9d29a1bc9fd542be9dfa4777c020. --- src/Analyser/Fiber/FiberNodeScopeResolver.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Analyser/Fiber/FiberNodeScopeResolver.php b/src/Analyser/Fiber/FiberNodeScopeResolver.php index b6d6d4eb58..aebb3328ce 100644 --- a/src/Analyser/Fiber/FiberNodeScopeResolver.php +++ b/src/Analyser/Fiber/FiberNodeScopeResolver.php @@ -80,6 +80,8 @@ private function runFiberForNodeCallback( protected function processPendingFibers(ExpressionResultStorage $storage): void { + start: + foreach ($storage->pendingFibers as $pending) { $request = $pending['request']; $beforeScope = $storage->findBeforeScope($request->expr); @@ -101,7 +103,7 @@ protected function processPendingFibers(ExpressionResultStorage $storage): void } // Break and restart the loop since the array may have been modified - return; + goto start; } }