Fixed: #2486 AS1/2 stoppart as end of function part

This commit is contained in:
Jindra Petřík
2025-07-18 19:11:06 +02:00
parent bfb9502603
commit 3b3720ca87
2 changed files with 83 additions and 3 deletions

View File

@@ -378,4 +378,81 @@ public class ActionScript2AssemblerTest extends ActionScript2TestBase {
+ "}\n"
+ "trace(\"after\");");
}
@Test
public void testStopPartEndFunction() {
String res = decompilePcode("DefineFunction \"test\", 1, \"param1\" {\n"
+ "Push \"param1\"\n"
+ "GetVariable\n"
+ "StoreRegister 1\n"
+ "Pop\n"
+ "Push \"Start\"\n"
+ "Trace\n"
+ "Push register1, 1\n"
+ "Equals\n"
+ "Not\n"
+ "If loc007a\n"
+ "Push register1, 2\n"
+ "Equals\n"
+ "Not\n"
+ "If loc0075\n"
+ "Push register1, 3\n"
+ "Equals\n"
+ "Not\n"
+ "If loc006e\n"
+ "Push \"C\"\n"
+ "Trace\n"
+ "Jump loc00a5\n"
+ "loc006e:Push \"B\"\n"
+ "Trace\n"
+ "loc0075:Jump loc0081\n"
+ "loc007a:Push \"E\"\n"
+ "Trace\n"
+ "loc0081:Push register1, 4\n"
+ "Equals\n"
+ "Not\n"
+ "If loc009e\n"
+ "Push \"A\"\n"
+ "Trace\n"
+ "Jump loc00a5\n"
+ "loc009e:Push \"D\"\n"
+ "Trace\n"
+ "}\n"
+ "loc00a5:Push \"end\"\n"
+ "Trace\n");
res = cleanPCode(res);
assertEquals(res, "function test(param1)\n"
+ "{\n"
+ "var _loc1_ = param1;\n"
+ "trace(\"Start\");\n"
+ "if(_loc1_ == 1)\n"
+ "{\n"
+ "if(_loc1_ == 2)\n"
+ "{\n"
+ "if(_loc1_ == 3)\n"
+ "{\n"
+ "trace(\"C\");\n"
+ "}\n"
+ "else\n"
+ "{\n"
+ "trace(\"B\");\n"
+ "}\n"
+ "return;\n"
+ "}\n"
+ "}\n"
+ "else\n"
+ "{\n"
+ "trace(\"E\");\n"
+ "}\n"
+ "if(_loc1_ == 4)\n"
+ "{\n"
+ "trace(\"A\");\n"
+ "}\n"
+ "else\n"
+ "{\n"
+ "trace(\"D\");\n"
+ "}\n"
+ "}\n"
+ "trace(\"end\");");
}
}