@@ -174,6 +174,130 @@ public function dataIsAlwaysTerminating(): array
174174 'while (true) { break; } ' ,
175175 false ,
176176 ],
177+ [
178+ 'while (true) { exit; } ' ,
179+ true ,
180+ ],
181+ [
182+ 'while (true) { while (true) { } } ' ,
183+ true ,
184+ ],
185+ [
186+ 'while (true) { while (true) { return; } } ' ,
187+ true ,
188+ ],
189+ [
190+ 'while (true) { while (true) { break; } } ' ,
191+ true ,
192+ ],
193+ [
194+ 'while (true) { while (true) { exit; } } ' ,
195+ true ,
196+ ],
197+ [
198+ 'while (true) { while (true) { break 2; } } ' ,
199+ false ,
200+ ],
201+ [
202+ 'while (true) { while ($x) { } } ' ,
203+ true ,
204+ ],
205+ [
206+ 'while (true) { while ($x) { return; } } ' ,
207+ true ,
208+ ],
209+ [
210+ 'while (true) { while ($x) { break; } } ' ,
211+ true ,
212+ ],
213+ [
214+ 'while (true) { while ($x) { exit; } } ' ,
215+ true ,
216+ ],
217+ [
218+ 'while (true) { while ($x) { break 2; } } ' ,
219+ false ,
220+ ],
221+ [
222+ 'for (;;) { } ' ,
223+ true ,
224+ ],
225+ [
226+ 'for (;;) { return; } ' ,
227+ true ,
228+ ],
229+ [
230+ 'for (;;) { break; } ' ,
231+ false ,
232+ ],
233+ [
234+ 'for (;;) { exit; } ' ,
235+ true ,
236+ ],
237+ [
238+ 'for (;;) { for (;;) { } } ' ,
239+ true ,
240+ ],
241+ [
242+ 'for (;;) { for (;;) { return; } } ' ,
243+ true ,
244+ ],
245+ [
246+ 'for (;;) { for (;;) { break; } } ' ,
247+ true ,
248+ ],
249+ [
250+ 'for (;;) { for (;;) { exit; } } ' ,
251+ true ,
252+ ],
253+ [
254+ 'for (;;) { for (;;) { break 2; } } ' ,
255+ false ,
256+ ],
257+ [
258+ 'for (;;) { for ($i = 0; $i< 5; $i++) { } } ' ,
259+ true ,
260+ ],
261+ [
262+ 'for (;;) { for ($i = 0; $i< 5; $i++) { return; } } ' ,
263+ true ,
264+ ],
265+ [
266+ 'for (;;) { for ($i = 0; $i< 5; $i++) { break; } } ' ,
267+ true ,
268+ ],
269+ [
270+ 'for (;;) { for ($i = 0; $i< 5; $i++) { exit; } } ' ,
271+ true ,
272+ ],
273+ [
274+ 'for (;;) { for ($i = 0; $i< 5; $i++) { break 2; } } ' ,
275+ false ,
276+ ],
277+ [
278+ 'for ($i = 0; $i < 5;) { } ' ,
279+ true ,
280+ ],
281+ [
282+ 'for ($i = 0; $i < 5; $i--) { } ' ,
283+ true ,
284+ ],
285+ [
286+ 'for (; 0, 1;) { } ' ,
287+ true ,
288+ ],
289+ [
290+ 'for (; 1, 0;) { } ' ,
291+ false ,
292+ ],
293+ [
294+ 'for (; "", "a";) { } ' ,
295+ true ,
296+ ],
297+ [
298+ 'for (; "a", "";) { } ' ,
299+ false ,
300+ ],
177301 [
178302 'do { } while (doFoo()); ' ,
179303 false ,
@@ -232,7 +356,7 @@ public function dataIsAlwaysTerminating(): array
232356 ],
233357 [
234358 'for ($i = 0; $i < 10; $i++) { return; } ' ,
235- false , // will be true with range types
359+ true ,
236360 ],
237361 [
238362 'for ($i = 0; $i < 0; $i++) { return; } ' ,
0 commit comments