@@ -1522,16 +1522,12 @@ private function processStmtNode(
15221522 }
15231523
15241524 $ breakExitPoints = $ finalScopeResult ->getExitPointsByType (Break_::class);
1525- if ($ alwaysIterates && count ($ breakExitPoints ) > 0 ) {
1526- $ breakScope = null ;
1525+ if (count ($ breakExitPoints ) > 0 ) {
1526+ $ breakScope = $ alwaysIterates ? null : $ finalScope ;
15271527 foreach ($ breakExitPoints as $ breakExitPoint ) {
15281528 $ breakScope = $ breakScope === null ? $ breakExitPoint ->getScope () : $ breakScope ->mergeWith ($ breakExitPoint ->getScope ());
15291529 }
15301530 $ finalScope = $ breakScope ;
1531- } else {
1532- foreach ($ breakExitPoints as $ breakExitPoint ) {
1533- $ finalScope = $ finalScope ->mergeWith ($ breakExitPoint ->getScope ());
1534- }
15351531 }
15361532
15371533 $ isIterableAtLeastOnce = $ beforeCondBooleanType ->isTrue ()->yes ();
@@ -1639,18 +1635,12 @@ private function processStmtNode(
16391635 }
16401636
16411637 $ breakExitPoints = $ bodyScopeResult ->getExitPointsByType (Break_::class);
1642- if ($ alwaysIterates && count ($ breakExitPoints ) > 0 ) {
1643- $ breakScope = null ;
1638+ if (count ($ breakExitPoints ) > 0 ) {
1639+ $ breakScope = $ alwaysIterates ? null : $ finalScope ;
16441640 foreach ($ breakExitPoints as $ breakExitPoint ) {
1645- $ breakScope = $ breakScope === null
1646- ? $ breakExitPoint ->getScope ()
1647- : $ breakScope ->mergeWith ($ breakExitPoint ->getScope ());
1641+ $ breakScope = $ breakScope === null ? $ breakExitPoint ->getScope () : $ breakScope ->mergeWith ($ breakExitPoint ->getScope ());
16481642 }
16491643 $ finalScope = $ breakScope ;
1650- } else {
1651- foreach ($ breakExitPoints as $ breakExitPoint ) {
1652- $ finalScope = $ finalScope ->mergeWith ($ breakExitPoint ->getScope ());
1653- }
16541644 }
16551645
16561646 return new InternalStatementResult (
@@ -1762,18 +1752,12 @@ private function processStmtNode(
17621752 }
17631753
17641754 $ breakExitPoints = $ finalScopeResult ->getExitPointsByType (Break_::class);
1765- if ($ alwaysIterates -> yes () && count ($ breakExitPoints ) > 0 ) {
1766- $ breakScope = null ;
1755+ if (count ($ breakExitPoints ) > 0 ) {
1756+ $ breakScope = $ alwaysIterates -> yes () ? null : $ finalScope ;
17671757 foreach ($ breakExitPoints as $ breakExitPoint ) {
1768- $ breakScope = $ breakScope === null
1769- ? $ breakExitPoint ->getScope ()
1770- : $ breakScope ->mergeWith ($ breakExitPoint ->getScope ());
1758+ $ breakScope = $ breakScope === null ? $ breakExitPoint ->getScope () : $ breakScope ->mergeWith ($ breakExitPoint ->getScope ());
17711759 }
17721760 $ finalScope = $ breakScope ;
1773- } else {
1774- foreach ($ breakExitPoints as $ breakExitPoint ) {
1775- $ finalScope = $ finalScope ->mergeWith ($ breakExitPoint ->getScope ());
1776- }
17771761 }
17781762
17791763 if ($ isIterableAtLeastOnce ->no () || $ finalScopeResult ->isAlwaysTerminating ()) {
0 commit comments