Fixed: #2651 Loop breaks detection

This commit is contained in:
Jindra Petřík
2026-03-04 08:29:46 +01:00
parent 29ead369bf
commit d487ef7064
12 changed files with 108 additions and 56 deletions

View File

@@ -556,26 +556,19 @@ public class ActionScript2AssemblerTest extends ActionScript2TestBase {
assertEquals(res, "function f()\n"
+ "{\n"
+ "var a = [1,2,3];\n"
+ "loop0:\n"
+ "for(v in a)\n"
+ "{\n"
+ "trace(v);\n"
+ "var b = 0;\n"
+ "while(true)\n"
+ "{\n"
+ "if(b < 10)\n"
+ "while(b < 10)\n"
+ "{\n"
+ "if(b == 4)\n"
+ "{\n"
+ "break;\n"
+ "trace(\"ret\");\n"
+ "return;\n"
+ "}\n"
+ "b++;\n"
+ "continue;\n"
+ "}\n"
+ "continue loop0;\n"
+ "}\n"
+ "trace(\"ret\");\n"
+ "break;\n"
+ "}\n"
+ "}");
}

View File

@@ -2647,5 +2647,27 @@ public class ActionScript2Test extends ActionScript2TestBase {
+ "trace(\"finish\");\r\n"
);
}
@Test
public void frame97_twoInTest() {
compareSrc(97, "trace(\"twoInTest\");\r\n"
+ "var o = {a:{}};\r\n"
+ "for(var n in o)\r\n"
+ "{\r\n"
+ "var c = 5;\r\n"
+ "for(var i in o.a)\r\n"
+ "{\r\n"
+ "if(i == c)\r\n"
+ "{\r\n"
+ "if(i == 0)\r\n"
+ "{\r\n"
+ "trace(\"xx\");\r\n"
+ "break;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "}\r\n"
+ "}\r\n"
);
}
//--FRAMES-END--
}