diff --git a/tests/PHPStan/Analyser/StatementResultTest.php b/tests/PHPStan/Analyser/StatementResultTest.php index 98437ea18c..8a251eae54 100644 --- a/tests/PHPStan/Analyser/StatementResultTest.php +++ b/tests/PHPStan/Analyser/StatementResultTest.php @@ -173,6 +173,26 @@ public function dataIsAlwaysTerminating(): array 'while (true) { break; }', false, ], + [ + 'while (true) { exit; }', + true, + ], + [ + 'while (true) { while (true) { break; } }', + true, // should be false + ], + [ + 'while (true) { while (true) { break 2; } }', + false, // should be true + ], + [ + 'while (true) { while ($x) { break; } }', + true, // should be false + ], + [ + 'while (true) { while ($x) { break 2; } }', + false, // should be true + ], [ 'for (;;) { }', true, @@ -185,6 +205,26 @@ public function dataIsAlwaysTerminating(): array 'for (;;) { break; }', false, ], + [ + 'for (;;) { exit; }', + true, + ], + [ + 'for (;;) { for (;;) { break; } }', + true, // should be false + ], + [ + 'for (;;) { for (;;) { break 2; } }', + false, // should be true + ], + [ + 'for (;;) { for ($i = 0; $i< 5; $i++) { break; } }', + true, // should be false + ], + [ + 'for (;;) { for ($i = 0; $i< 5; $i++) { break 2; } }', + false, // should be true + ], [ 'do { } while (doFoo());', false,