@@ -173,6 +173,130 @@ public function dataIsAlwaysTerminating(): array
173
173
'while (true) { break; } ' ,
174
174
false ,
175
175
],
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
+ ],
176
300
[
177
301
'do { } while (doFoo()); ' ,
178
302
false ,
@@ -231,7 +355,7 @@ public function dataIsAlwaysTerminating(): array
231
355
],
232
356
[
233
357
'for ($i = 0; $i < 10; $i++) { return; } ' ,
234
- false , // will be true with range types
358
+ true ,
235
359
],
236
360
[
237
361
'for ($i = 0; $i < 0; $i++) { return; } ' ,
0 commit comments