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