Skip to content

Commit b3e2ae9

Browse files
authored
Simplify FiberNodeScopeResolver (#4659)
1 parent de8376e commit b3e2ae9

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

src/Analyser/Fiber/FiberNodeScopeResolver.php

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ private function runFiberForNodeCallback(
8080

8181
protected function processPendingFibers(ExpressionResultStorage $storage): void
8282
{
83+
start:
84+
8385
foreach ($storage->pendingFibers as $pending) {
8486
$request = $pending['request'];
8587
$beforeScope = $storage->findBeforeScope($request->expr);
@@ -99,36 +101,30 @@ protected function processPendingFibers(ExpressionResultStorage $storage): void
99101
if ($storage->findBeforeScope($request->expr) === null) {
100102
throw new ShouldNotHappenException(sprintf('processExprNode should have stored the beforeScope of %s on line %s', get_class($request->expr), $request->expr->getStartLine()));
101103
}
102-
$this->processPendingFibers($storage);
103104

104105
// Break and restart the loop since the array may have been modified
105-
return;
106+
goto start;
106107
}
107108
}
108109

109110
protected function processPendingFibersForRequestedExpr(ExpressionResultStorage $storage, Expr $expr, Scope $result): void
110111
{
111-
$restartLoop = true;
112-
113-
while ($restartLoop) {
114-
$restartLoop = false;
112+
start:
115113

116-
foreach ($storage->pendingFibers as $key => $pending) {
117-
$request = $pending['request'];
118-
if ($request->expr !== $expr) {
119-
continue;
120-
}
114+
foreach ($storage->pendingFibers as $key => $pending) {
115+
$request = $pending['request'];
116+
if ($request->expr !== $expr) {
117+
continue;
118+
}
121119

122-
unset($storage->pendingFibers[$key]);
123-
$restartLoop = true;
120+
unset($storage->pendingFibers[$key]);
124121

125-
$fiber = $pending['fiber'];
126-
$request = $fiber->resume($result);
127-
$this->runFiberForNodeCallback($storage, $fiber, $request);
122+
$fiber = $pending['fiber'];
123+
$request = $fiber->resume($result);
124+
$this->runFiberForNodeCallback($storage, $fiber, $request);
128125

129-
// Break and restart the loop since the array may have been modified
130-
break;
131-
}
126+
// Break and restart the loop since the array may have been modified
127+
goto start;
132128
}
133129
}
134130

0 commit comments

Comments
 (0)