@@ -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