mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-08-02 15:32:15 +00:00
AS3 try..catch..finally fixes
This commit is contained in:
@@ -408,6 +408,58 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi
|
||||
false);
|
||||
}
|
||||
|
||||
@Test(dataProvider = "swfNamesProvider")
|
||||
public void testTryFinallyReturnNested2(String swfUsed) {
|
||||
decompileMethod(swfUsed, "testTryFinallyReturnNested2", "var a:int = Math.random() * 5;\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in try2\");\r\n"
|
||||
+ "if(a > 4)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "return \"RET\";\r\n"
|
||||
+ "}\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e2:Error)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch2:e\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e2:EOFError)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch2:eof\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "finally\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e1:Error)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch1:e\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e1:EOFError)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch1:eof\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "finally\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "finally\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally0\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after0\");\r\n"
|
||||
+ "return \"RETFINAL\";\r\n",
|
||||
false);
|
||||
}
|
||||
|
||||
@Test(dataProvider = "swfNamesProvider")
|
||||
public void testTryFinallyReturnVoid(String swfUsed) {
|
||||
decompileMethod(swfUsed, "testTryFinallyReturnVoid", "var a:int = Math.random() * 5;\r\n"
|
||||
|
||||
@@ -305,15 +305,14 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in try\");\r\n"
|
||||
+ "trace(\"in finally\");\r\n"
|
||||
+ "trace(\"after\");\r\n"
|
||||
+ "return;\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(_loc_e_:*)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally\");\r\n"
|
||||
+ "throw _loc_e_;\r\n"
|
||||
+ "}\r\n",
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally\");\r\n"
|
||||
+ "trace(\"after\");\r\n",
|
||||
false);
|
||||
}
|
||||
|
||||
@@ -420,14 +419,81 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally2\");\r\n"
|
||||
+ "trace(\"after\");\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "return \"RETFINAL\";\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(_loc_e_:*)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "throw _loc_e_;\r\n"
|
||||
+ "}\r\n",
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "return \"RETFINAL\";\r\n",
|
||||
false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTryFinallyReturnNested2() {
|
||||
decompileMethod("swftools", "testTryFinallyReturnNested2", "var _loc1_:int = Math.random() * 5;\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "try\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in try2\");\r\n"
|
||||
+ "if(_loc1_ > 4)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally2\");\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "trace(\"in finally0\");\r\n"
|
||||
+ "return \"RET\";\r\n"
|
||||
+ "}\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e2:Error)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch2:e\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e2:EOFError)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch2:eof\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(_loc_e_:*)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally2\");\r\n"
|
||||
+ "throw _loc_e_;\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally2\");\r\n"
|
||||
+ "trace(\"after2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e1:Error)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch1:e\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(e1:EOFError)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in catch1:eof\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(_loc_e_:*)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "throw _loc_e_;\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally1\");\r\n"
|
||||
+ "trace(\"after1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "catch(_loc_e_:*)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"in finally0\");\r\n"
|
||||
+ "throw _loc_e_;\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"in finally0\");\r\n"
|
||||
+ "trace(\"after0\");\r\n"
|
||||
+ "return \"RETFINAL\";\r\n",
|
||||
false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user