@@ -204,21 +204,21 @@ TEST_F(ControlBlocksTest, Forever)
204204
205205 compiler.compile (block1);
206206
207- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
207+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
208208 ASSERT_TRUE (compiler.constValues ().empty ());
209209 ASSERT_TRUE (compiler.variables ().empty ());
210210 ASSERT_TRUE (compiler.lists ().empty ());
211211
212212 compiler.compile (block2);
213213
214- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
214+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
215215 ASSERT_TRUE (compiler.constValues ().empty ());
216216 ASSERT_TRUE (compiler.variables ().empty ());
217217 ASSERT_TRUE (compiler.lists ().empty ());
218218
219219 compiler.compile (block3);
220220
221- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
221+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_FOREVER_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
222222 ASSERT_TRUE (compiler.constValues ().empty ());
223223 ASSERT_TRUE (compiler.variables ().empty ());
224224 ASSERT_TRUE (compiler.lists ().empty ());
@@ -248,7 +248,7 @@ TEST_F(ControlBlocksTest, Repeat)
248248
249249 compiler.compile (block1);
250250
251- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_REPEAT_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
251+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_REPEAT_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
252252 ASSERT_EQ (compiler.constValues ().size (), 1 );
253253 ASSERT_EQ (compiler.constValues ()[0 ].toDouble (), 5 );
254254 ASSERT_TRUE (compiler.variables ().empty ());
@@ -306,36 +306,36 @@ TEST_F(ControlBlocksTest, RepeatUntil)
306306
307307 ASSERT_EQ (
308308 compiler.bytecode (),
309- std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 0 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
309+ std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 0 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
310310 ASSERT_EQ (compiler.constValues ().size (), 1 );
311311 ASSERT_EQ (compiler.constValues ()[0 ].toBool (), false );
312312 ASSERT_TRUE (compiler.variables ().empty ());
313313 ASSERT_TRUE (compiler.lists ().empty ());
314314
315315 compiler.compile (block2);
316316
317- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 1 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
317+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 1 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
318318 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false }));
319319 ASSERT_TRUE (compiler.variables ().empty ());
320320 ASSERT_TRUE (compiler.lists ().empty ());
321321
322322 compiler.compile (block3);
323323
324- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 2 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
324+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 2 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
325325 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false }));
326326 ASSERT_TRUE (compiler.variables ().empty ());
327327 ASSERT_TRUE (compiler.lists ().empty ());
328328
329329 compiler.compile (block4);
330330
331- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 3 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
331+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 3 , vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
332332 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false , Value () }));
333333 ASSERT_TRUE (compiler.variables ().empty ());
334334 ASSERT_TRUE (compiler.lists ().empty ());
335335
336336 compiler.compile (block5);
337337
338- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_NULL, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
338+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_NULL, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
339339 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false , Value () }));
340340 ASSERT_TRUE (compiler.variables ().empty ());
341341 ASSERT_TRUE (compiler.lists ().empty ());
@@ -377,7 +377,7 @@ TEST_F(ControlBlocksTest, While)
377377 ASSERT_EQ (
378378 compiler.bytecode (),
379379 std::vector<unsigned int >(
380- { vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 0 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
380+ { vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 0 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
381381 ASSERT_EQ (compiler.constValues ().size (), 1 );
382382 ASSERT_EQ (compiler.constValues ()[0 ].toBool (), false );
383383 ASSERT_TRUE (compiler.variables ().empty ());
@@ -387,7 +387,7 @@ TEST_F(ControlBlocksTest, While)
387387
388388 ASSERT_EQ (
389389 compiler.bytecode (),
390- std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 1 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
390+ std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 1 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
391391 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false }));
392392 ASSERT_TRUE (compiler.variables ().empty ());
393393 ASSERT_TRUE (compiler.lists ().empty ());
@@ -396,7 +396,7 @@ TEST_F(ControlBlocksTest, While)
396396
397397 ASSERT_EQ (
398398 compiler.bytecode (),
399- std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 2 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
399+ std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 2 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
400400 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false }));
401401 ASSERT_TRUE (compiler.variables ().empty ());
402402 ASSERT_TRUE (compiler.lists ().empty ());
@@ -405,14 +405,14 @@ TEST_F(ControlBlocksTest, While)
405405
406406 ASSERT_EQ (
407407 compiler.bytecode (),
408- std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 3 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
408+ std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_CONST, 3 , vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
409409 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false , Value () }));
410410 ASSERT_TRUE (compiler.variables ().empty ());
411411 ASSERT_TRUE (compiler.lists ().empty ());
412412
413413 compiler.compile (block5);
414414
415- ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_NULL, vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
415+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_UNTIL_LOOP, vm::OP_NULL, vm::OP_NOT, vm::OP_BEGIN_UNTIL_LOOP, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
416416 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ false , false , false , Value () }));
417417 ASSERT_TRUE (compiler.variables ().empty ());
418418 ASSERT_TRUE (compiler.lists ().empty ());
@@ -449,7 +449,7 @@ TEST_F(ControlBlocksTest, ForEach)
449449 ASSERT_EQ (
450450 compiler.bytecode (),
451451 std::vector<unsigned int >(
452- { vm::OP_START, vm::OP_CONST, 0 , vm::OP_REPEAT_LOOP, vm::OP_REPEAT_LOOP_INDEX1, vm::OP_SET_VAR, 0 , vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_ATOMIC , vm::OP_LOOP_END, vm::OP_HALT }));
452+ { vm::OP_START, vm::OP_CONST, 0 , vm::OP_REPEAT_LOOP, vm::OP_REPEAT_LOOP_INDEX1, vm::OP_SET_VAR, 0 , vm::OP_NULL, vm::OP_PRINT, vm::OP_BREAK_FRAME , vm::OP_LOOP_END, vm::OP_HALT }));
453453 ASSERT_EQ (compiler.constValues ().size (), 1 );
454454 ASSERT_EQ (compiler.constValues ()[0 ].toDouble (), 5 );
455455 ASSERT_EQ (compiler.variables ().size (), 1 );
0 commit comments