diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java index 1c1327074..79a65900a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/AVM2LocalData.java @@ -86,6 +86,8 @@ public class AVM2LocalData extends BaseLocalData { public Map pushDefaultPart = new HashMap<>(); + public Map finallyKinds = new HashMap<>(); + /** * exception index -> switch throw part */ @@ -162,6 +164,7 @@ public class AVM2LocalData extends BaseLocalData { parsedExceptionIds = localData.parsedExceptionIds; finallyTargetParts = localData.finallyTargetParts; pushDefaultPart = localData.pushDefaultPart; + finallyKinds = localData.finallyKinds; } public AVM2ConstantPool getConstants() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index 2f674fbd6..9287a51be 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -131,6 +131,11 @@ public class AVM2Graph extends Graph { private final Logger logger = Logger.getLogger(AVM2Graph.class.getName()); + final int FINALLY_KIND_STACK_BASED = 0; + final int FINALLY_KIND_REGISTER_BASED = 1; + final int FINALLY_KIND_INLINED = 2; + final int FINALLY_KIND_UNKNOWN = -1; + public AVM2Code getCode() { return avm2code; } @@ -231,27 +236,20 @@ public class AVM2Graph extends Graph { List targetOutput = translatePart(localData2, finallyTryTargetPart, finallyTryTargetStack, 0 /*??*/, "try_target"); - final int FINALLY_KIND_STACK_BASED = 0; - final int FINALLY_KIND_REGISTER_BASED = 1; - final int FINALLY_KIND_INLINED = 2; - final int FINALLY_KIND_UNKNOWN = -1; int switchedReg = -1; int finallyKind = FINALLY_KIND_UNKNOWN; Integer finallyThrowPushByte = null; - if (finallyTryTargetStack.size() == 1) { + if (finallyTryTargetStack.size() == 1 && finallyTryTargetStack.peek() instanceof IntegerValueAVM2Item) { finallyKind = FINALLY_KIND_STACK_BASED; - if (finallyTryTargetStack.peek() instanceof IntegerValueAVM2Item) { - finallyThrowPushByte = ((IntegerValueAVM2Item) finallyTryTargetStack.peek()).intValue(); - } + finallyThrowPushByte = ((IntegerValueAVM2Item) finallyTryTargetStack.peek()).intValue(); } else if (targetOutput.size() >= 2 && (targetOutput.get(targetOutput.size() - 1) instanceof SetLocalAVM2Item) - && (targetOutput.get(targetOutput.size() - 2) instanceof SetLocalAVM2Item)) { + && (targetOutput.get(targetOutput.size() - 2) instanceof SetLocalAVM2Item) + && (((SetLocalAVM2Item) targetOutput.get(targetOutput.size() - 1)).value instanceof IntegerValueAVM2Item)) { SetLocalAVM2Item setLocal = ((SetLocalAVM2Item) targetOutput.get(targetOutput.size() - 1)); switchedReg = setLocal.regIndex; - if (setLocal.value instanceof IntegerValueAVM2Item) { - finallyThrowPushByte = ((IntegerValueAVM2Item) setLocal.value).intValue(); - } + finallyThrowPushByte = ((IntegerValueAVM2Item) setLocal.value).intValue(); finallyKind = FINALLY_KIND_REGISTER_BASED; } else if (!targetOutput.isEmpty() && (targetOutput.get(targetOutput.size() - 1) instanceof ThrowAVM2Item)) { //inlined to single part @@ -260,6 +258,7 @@ public class AVM2Graph extends Graph { } else { //probably inlined code in more parts, cannot do :-( } + localData.finallyKinds.put(e, finallyKind); Integer defaultPushByte = null; GraphPart switchPart = null; if (finallyKind == FINALLY_KIND_STACK_BASED) { @@ -975,6 +974,7 @@ public class AVM2Graph extends Graph { } boolean inlinedFinally = false; + boolean finallyAsUnnamedException = false; List finallyTargetItems = new ArrayList<>(); @@ -1065,6 +1065,7 @@ public class AVM2Graph extends Graph { if (!inlinedFinally) { afterPart = null; } + finallyAsUnnamedException = localData.finallyKinds.get(finallyIndex) == FINALLY_KIND_UNKNOWN; } if (localData.pushDefaultPart.containsKey(finallyIndex)) { @@ -1152,12 +1153,21 @@ public class AVM2Graph extends Graph { && (((SetLocalAVM2Item) currentRet.get(currentRet.size() - 1)).regIndex == switchedReg)) { currentRet.remove(currentRet.size() - 1); } + + - if (!inlinedFinally && catchedExceptions.isEmpty() && finallyCommands.isEmpty()) { + if (!finallyAsUnnamedException && !inlinedFinally && catchedExceptions.isEmpty() && finallyCommands.isEmpty()) { currentRet.addAll(tryCommands); return true; } + if (finallyAsUnnamedException) + { + catchedExceptions.add(finallyException); + catchCommands.add(finallyCommands); + finallyCommands = new ArrayList<>(); + } + TryAVM2Item tryItem = new TryAVM2Item(tryCommands, catchedExceptions, catchCommands, finallyCommands, ""); if (inlinedFinally) { List> parentCatchCommands = new ArrayList<>(); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java index a1bed7484..5ce92bb74 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java @@ -24,7 +24,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "\r\n" + "trace(\"hey\");\r\n" + "}\r\n", - false); + false); } @Test @@ -50,21 +50,21 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "{\r\n" + "}\r\n" + "return 5;\r\n", - false); + false); } @Test public void testDoubleDup() { decompileMethod("assembled", "testDoubleDup", "var _loc10_:Rectangle = myprop(_loc5_);\r\n" + "_loc10_.mymethod(-_loc10_.width,-_loc10_.height);\r\n", - false); + false); } @Test public void testDup() { decompileMethod("assembled", "testDup", "var _loc1_:Number;\r\n" + "return 1 - (_loc1_ = 1 - _loc1_ / _loc4_) * _loc1_;\r\n", - false); + false); } @Test @@ -75,7 +75,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "{\r\n" + "trace(_loc2_);\r\n" + "}\r\n", - false); + false); } @Test @@ -91,7 +91,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "}\r\n" + "}\r\n" + "_loc3_ = 0;\r\n", - false); + false); } @Test @@ -100,14 +100,14 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "{\r\n" + "_loc6_.methodname(_loc1_,_loc2_,_loc5_);\r\n" + "}\r\n", - false); + false); } @Test public void testIncrement() { decompileMethod("assembled", "testIncrement", "super();\r\n" + "b = a++;\r\n", - false); + false); } @Test @@ -116,13 +116,13 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "{\r\n" + "somemethod();\r\n" + "}\r\n", - false); + false); } @Test public void testIncrement3() { decompileMethod("assembled", "testIncrement3", "--_loc1_.length;\r\n", - false); + false); } @Test @@ -131,14 +131,14 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "var myslot:int;\r\n" + "myname.somemethod(\"okay\",myslot = _loc5_);\r\n" + "myname.start();\r\n", - false); + false); } @Test public void testSetSlotFindProperty() { decompileMethod("assembled", "testSetSlotFindProperty", "var myprop:int;\r\n" + "return myprop = 50;\r\n", - false); + false); } @Test @@ -158,7 +158,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "_loc2_ = \"C\";\r\n" + "}\r\n" + "_loc2_ = \"after\";\r\n", - false); + false); } @Test @@ -181,7 +181,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "default:\r\n" + "_loc2_ = 100;\r\n" + "}\r\n", - false); + false); } @Test @@ -227,7 +227,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "}\r\n" + "trace(\"G\");\r\n" + "return null;\r\n", - false); + false); } @Test @@ -248,7 +248,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -267,6 +267,20 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT + "}\r\n" + "while(_loc5_ <= 100);\r\n" + "trace(\"after\");\r\n", - false); + false); + } + + @Test + public void testUnnamedException() { + decompileMethod("assembled", "testUnnamedException", "var _loc5_:int = 5;\r\n" + + "try\r\n" + + "{\r\n" + + "trace(\"hello\");\r\n" + + "}\r\n" + + "catch(_loc_e_:*)\r\n" + + "{\r\n" + + "return _loc5_;\r\n" + + "}\r\n", + false); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 6f39b4c19..2bda0bbe2 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -19,7 +19,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testArguments() { decompileMethod("classic_air", "testArguments", "return arguments[0];\r\n", - false); + false); } @Test @@ -39,7 +39,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"infinally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -59,7 +59,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"ch\");\r\n" + "}\r\n", - false); + false); } @Test @@ -72,7 +72,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var e:TestClass2 = TestClass2.createMe(\"test\");\r\n" + "e.attrib1 = e.attrib2 = e.attrib3 = this.getCounter();\r\n" + "this.traceIt(e.toString());\r\n", - false); + false); } @Test @@ -80,7 +80,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile decompileMethod("classic_air", "testComplexExpressions", "var i:int = 0;\r\n" + "var j:int = 0;\r\n" + "j = i = i + (i = i + i++);\r\n", - false); + false); } @Test @@ -146,7 +146,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"hello\");\r\n" + "}\r\n", - false); + false); } @Test @@ -162,7 +162,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "}\r\n" + "k = 7;\r\n", - false); + false); } @Test @@ -182,7 +182,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "vnumber = 0.5;\r\n" + "vnumber = 6;\r\n" + "vobject = vclass;\r\n", - false); + false); } @Test @@ -200,7 +200,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"4\");\r\n" + "}\r\n" + "trace(\"after switch\");\r\n", - false); + false); } @Test @@ -222,7 +222,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -234,7 +234,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "a++;\r\n" + "}\r\n" + "while(a < 20);\r\n", - false); + false); } @Test @@ -255,7 +255,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "while(k < 9);\r\n" + "return 2;\r\n", - false); + false); } @Test @@ -265,7 +265,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "nextChar();\r\n" + "}\r\n" + "while(ch != \"\\n\" && ch != \"\");\r\n", - false); + false); } @Test @@ -287,7 +287,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "while(k < 10);\r\n" + "trace(\"ss\");\r\n", - false); + false); } @Test @@ -298,7 +298,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"between\");\r\n" + "var g:* = k.(++d.attrib, false);\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -319,7 +319,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "arr[0]();\r\n" + "}\r\n" + "return i == 0;\r\n", - false); + false); } @Test @@ -341,7 +341,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "return \"hu\" + str;\r\n" + "}\r\n", - false); + false); } @Test @@ -352,7 +352,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"a=\" + a);\r\n" + "a++;\r\n" + "}\r\n", - false); + false); } @Test @@ -378,7 +378,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -393,7 +393,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"hello:\" + a);\r\n" + "a++;\r\n" + "}\r\n", - false); + false); } @Test @@ -422,7 +422,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"part5\");\r\n" + "}\r\n", - false); + false); } @Test @@ -437,7 +437,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"item #\" + item);\r\n" + "}\r\n", - false); + false); } @Test @@ -454,7 +454,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"item #\" + test[0]);\r\n" + "}\r\n", - false); + false); } @Test @@ -468,7 +468,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"item #\" + this.testPriv);\r\n" + "}\r\n", - false); + false); } @Test @@ -494,7 +494,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"C\");\r\n" + "}\r\n" + "trace(\"exit\");\r\n", - false); + false); } @Test @@ -509,7 +509,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(item);\r\n" + "}\r\n", - false); + false); } @Test @@ -542,7 +542,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"C\");\r\n" + "}\r\n", - false); + false); } @Test @@ -574,7 +574,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"after\");\r\n" + "}\r\n" + "return 89;\r\n", - false); + false); } @Test @@ -598,7 +598,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"E\");\r\n" + "}\r\n" + "return 5;\r\n", - false); + false); } @Test @@ -626,7 +626,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"C\");\r\n" + "}\r\n" + "trace(\"return\");\r\n", - false); + false); } @Test @@ -647,7 +647,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "}\r\n" + "trace(\"return\");\r\n", - false); + false); } @Test @@ -672,7 +672,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "j++;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test @@ -697,7 +697,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"D\");\r\n" + "}\r\n" + "trace(\"finish\");\r\n", - false); + false); } @Test @@ -727,13 +727,13 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"before loop end\");\r\n" + "}\r\n", - false); + false); } @Test public void testHello() { decompileMethod("classic_air", "testHello", "trace(\"hello\");\r\n", - false); + false); } @Test @@ -743,7 +743,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"onTrue\");\r\n" + "}\r\n", - false); + false); } @Test @@ -757,7 +757,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"onFalse\");\r\n" + "}\r\n", - false); + false); } @Test @@ -781,7 +781,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"C\");\r\n" + "return 7;\r\n", - false); + false); } @Test @@ -803,7 +803,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -817,7 +817,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "b++;\r\n" + "var c:int = 1;\r\n" + "b = c++;\r\n", - false); + false); } @Test @@ -856,7 +856,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "chars[index++] = 5;\r\n" + "trace(\"arr[++e]\");\r\n" + "chars[++index] = 5;\r\n", - false); + false); } @Test @@ -877,7 +877,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "return first;\r\n" + "};\r\n" + "traceParameter(\"hello\");\r\n", - false); + false); } @Test @@ -894,7 +894,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "s = 8;\r\n" + "}\r\n" + "innerFunc(a);\r\n", - false); + false); } @Test @@ -921,7 +921,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"b!=7\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -946,7 +946,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"finally block\");\r\n" + "}\r\n", - false); + false); } @Test @@ -960,14 +960,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "b = true;\r\n" + "}\r\n" + "b = (i == 0 || i == 1) && j == 0;\r\n", - false); + false); } @Test public void testManualConvert() { decompileMethod("classic_air", "testManualConvert", "trace(\"String(this).length\");\r\n" + "trace(String(this).length);\r\n", - false); + false); } @Test @@ -984,7 +984,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "default:\r\n" + "jj = 3;\r\n" + "}\r\n", - false); + false); } @Test @@ -1000,7 +1000,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"onFalse\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1013,7 +1013,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "return (param1 as TestClass2).attrib1 == 5;\r\n" + "};\r\n" + "}()();\r\n", - false); + false); } @Test @@ -1024,19 +1024,19 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var b:* = ns::[name];\r\n" + "trace(b.c);\r\n" + "var c:* = myInternal::neco;\r\n", - false); + false); } @Test public void testParamNames() { decompileMethod("classic_air", "testParamNames", "return firstp + secondp + thirdp;\r\n", - false); + false); } @Test public void testParamsCount() { decompileMethod("classic_air", "testParamsCount", "return firstp;\r\n", - false); + false); } @Test @@ -1053,7 +1053,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "a = 6;\r\n" + "a = 0.666666666666667;\r\n" + "trace(\"a=\" + a);\r\n", - false); + false); } @Test @@ -1063,7 +1063,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var c:int = 3;\r\n" + "var d:* = a << (b >>> c);\r\n" + "var e:* = a << b >>> c;\r\n", - false); + false); } @Test @@ -1074,7 +1074,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "d.method(d.attrib * 5);\r\n" + "}\r\n", - false); + false); } @Test @@ -1083,14 +1083,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var a2:* = /[a-z\\r\\n0-9\\\\]+/i;\r\n" + "var b1:* = /[0-9AB]+/;\r\n" + "var b2:* = /[0-9AB]+/;\r\n", - false); + false); } @Test public void testRest() { decompileMethod("classic_air", "testRest", "trace(\"firstRest:\" + restval[0]);\r\n" + "return firstp;\r\n", - false); + false); } @Test @@ -1100,7 +1100,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"is eight\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1109,7 +1109,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "this.traceIt(\"hello30\");\r\n" + "this.traceIt(\"hello\" + (k - 1));\r\n" + "this.traceIt(\"hello56\");\r\n", - false); + false); } @Test @@ -1119,7 +1119,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"backslash: \\\\ \");\r\n" + "trace(\"single quotes: \\'hello!\\'\");\r\n" + "trace(\"new line \\r\\n hello!\");\r\n", - false); + false); } @Test @@ -1138,7 +1138,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "case 89:\r\n" + "trace(\"eightynine\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1155,7 +1155,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "case \"C\":\r\n" + "trace(\"is C\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1177,7 +1177,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "default:\r\n" + "trace(\"default clause\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1188,7 +1188,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var d:int = 78;\r\n" + "var e:* = a == b?c == d?1:7:3;\r\n" + "trace(\"e=\" + e);\r\n", - false); + false); } @Test @@ -1213,7 +1213,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"Finally part\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -1231,7 +1231,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "trace(\"in catch\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1259,7 +1259,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "return 4;\r\n" + "}\r\n", - false); + false); } @Test @@ -1301,7 +1301,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"after\");\r\n" + "return \"X\";\r\n", - false); + false); } @Test @@ -1335,7 +1335,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"after\");\r\n" + "return \"X\";\r\n", - false); + false); } @Test @@ -1346,14 +1346,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "var a:int = 5;\r\n" + "v[a * 8 - 39] = \"hi2\";\r\n" + "trace(v[0]);\r\n", - false); + false); } @Test public void testVector2() { decompileMethod("classic_air", "testVector2", "var a:Vector.> = new Vector.>();\r\n" + "var b:Vector. = new [10,20,30];\r\n", - false); + false); } @Test @@ -1367,7 +1367,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "a = 7;\r\n" + "b = 9;\r\n", - false); + false); } @Test @@ -1386,7 +1386,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "}\r\n" + "return \"B\";\r\n", - false); + false); } @Test @@ -1408,7 +1408,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "trace(\"hello2\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1431,7 +1431,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "continue;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test @@ -1459,7 +1459,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"after_try\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -1574,6 +1574,6 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "}\r\n" + "]]>\r\n" + ";\r\n", - false); + false); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 30cd69a3a..aed9a9565 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -19,7 +19,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testArguments() { decompileMethod("classic", "testArguments", "return arguments[0];\r\n", - false); + false); } @Test @@ -39,7 +39,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"infinally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -59,7 +59,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"ch\");\r\n" + "}\r\n", - false); + false); } @Test @@ -72,7 +72,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var e:TestClass2 = TestClass2.createMe(\"test\");\r\n" + "e.attrib1 = e.attrib2 = e.attrib3 = this.getCounter();\r\n" + "this.traceIt(e.toString());\r\n", - false); + false); } @Test @@ -80,7 +80,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes decompileMethod("classic", "testComplexExpressions", "var i:int = 0;\r\n" + "var j:int = 0;\r\n" + "j = i = i + (i = i + i++);\r\n", - false); + false); } @Test @@ -144,7 +144,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"hello\");\r\n" + "}\r\n", - false); + false); } @Test @@ -160,7 +160,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "}\r\n" + "k = 7;\r\n", - false); + false); } @Test @@ -180,7 +180,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "vnumber = 0.5;\r\n" + "vnumber = 6;\r\n" + "vobject = vclass;\r\n", - false); + false); } @Test @@ -198,7 +198,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"4\");\r\n" + "}\r\n" + "trace(\"after switch\");\r\n", - false); + false); } @Test @@ -220,7 +220,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -232,7 +232,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "a++;\r\n" + "}\r\n" + "while(a < 20);\r\n", - false); + false); } @Test @@ -253,7 +253,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "while(k < 9);\r\n" + "return 2;\r\n", - false); + false); } @Test @@ -263,7 +263,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "this.nextChar();\r\n" + "}\r\n" + "while(this.ch != \"\\n\" && this.ch != \"\");\r\n", - false); + false); } @Test @@ -285,7 +285,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "while(k < 10);\r\n" + "trace(\"ss\");\r\n", - false); + false); } @Test @@ -299,7 +299,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"between\");\r\n" + "g = k.(++d.attrib, 0);\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -320,7 +320,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "arr[0]();\r\n" + "}\r\n" + "return i == 0;\r\n", - false); + false); } @Test @@ -342,7 +342,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "return \"hu\" + str;\r\n" + "}\r\n", - false); + false); } @Test @@ -351,7 +351,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"a=\" + a);\r\n" + "}\r\n", - false); + false); } @Test @@ -376,7 +376,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -389,7 +389,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"hello:\" + a);\r\n" + "}\r\n", - false); + false); } @Test @@ -417,7 +417,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"part5\");\r\n" + "}\r\n", - false); + false); } @Test @@ -432,7 +432,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"item #\" + item);\r\n" + "}\r\n", - false); + false); } @Test @@ -449,7 +449,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"item #\" + test[0]);\r\n" + "}\r\n", - false); + false); } @Test @@ -463,7 +463,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"item #\" + this.testPriv);\r\n" + "}\r\n", - false); + false); } @Test @@ -488,7 +488,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"C\");\r\n" + "}\r\n" + "trace(\"exit\");\r\n", - false); + false); } @Test @@ -503,7 +503,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(item);\r\n" + "}\r\n", - false); + false); } @Test @@ -536,7 +536,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"C\");\r\n" + "}\r\n", - false); + false); } @Test @@ -568,7 +568,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"after\");\r\n" + "}\r\n" + "return 89;\r\n", - false); + false); } @Test @@ -592,7 +592,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"E\");\r\n" + "}\r\n" + "return 5;\r\n", - false); + false); } @Test @@ -619,7 +619,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"C\");\r\n" + "}\r\n" + "trace(\"return\");\r\n", - false); + false); } @Test @@ -640,7 +640,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "}\r\n" + "trace(\"return\");\r\n", - false); + false); } @Test @@ -664,7 +664,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "j++;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test @@ -689,7 +689,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"D\");\r\n" + "}\r\n" + "trace(\"finish\");\r\n", - false); + false); } @Test @@ -718,13 +718,13 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"before loop end\");\r\n" + "}\r\n", - false); + false); } @Test public void testHello() { decompileMethod("classic", "testHello", "trace(\"hello\");\r\n", - false); + false); } @Test @@ -734,7 +734,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"onTrue\");\r\n" + "}\r\n", - false); + false); } @Test @@ -748,7 +748,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"onFalse\");\r\n" + "}\r\n", - false); + false); } @Test @@ -772,7 +772,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"C\");\r\n" + "return 7;\r\n", - false); + false); } @Test @@ -794,7 +794,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"D\");\r\n" + "}\r\n", - false); + false); } @Test @@ -808,7 +808,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "b++;\r\n" + "var c:* = 1;\r\n" + "b = c++;\r\n", - false); + false); } @Test @@ -849,7 +849,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"arr[++e]\");\r\n" + "var _loc8_:* = ++index;\r\n" + "chars[_loc8_] = 5;\r\n", - false); + false); } @Test @@ -871,7 +871,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "return first;\r\n" + "};\r\n" + "traceParameter(\"hello\");\r\n", - false); + false); } @Test @@ -887,7 +887,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "s = 8;\r\n" + "}\r\n" + "innerFunc(a);\r\n", - false); + false); } @Test @@ -914,7 +914,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"b!=7\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -939,7 +939,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"finally block\");\r\n" + "}\r\n", - false); + false); } @Test @@ -953,14 +953,14 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "b = true;\r\n" + "}\r\n" + "b = (i == 0 || i == 1) && j == 0;\r\n", - false); + false); } @Test public void testManualConvert() { decompileMethod("classic", "testManualConvert", "trace(\"String(this).length\");\r\n" + "trace(String(this).length);\r\n", - false); + false); } @Test @@ -977,7 +977,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "default:\r\n" + "jj = 3;\r\n" + "}\r\n", - false); + false); } @Test @@ -993,7 +993,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"onFalse\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1002,7 +1002,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "return (param1 as TestClass2).attrib1 == 5;\r\n" + "};\r\n", - false); + false); } @Test @@ -1013,19 +1013,19 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var b:* = ns::[name];\r\n" + "trace(b.c);\r\n" + "var c:* = myInternal::neco;\r\n", - false); + false); } @Test public void testParamNames() { decompileMethod("classic", "testParamNames", "return firstp + secondp + thirdp;\r\n", - false); + false); } @Test public void testParamsCount() { decompileMethod("classic", "testParamsCount", "return firstp;\r\n", - false); + false); } @Test @@ -1042,7 +1042,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "a = 1 * 2 * 3;\r\n" + "a = 1 * 2 / 3;\r\n" + "trace(\"a=\" + a);\r\n", - false); + false); } @Test @@ -1052,7 +1052,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var c:* = 3;\r\n" + "var d:* = a << (b >>> c);\r\n" + "var e:* = a << b >>> c;\r\n", - false); + false); } @Test @@ -1063,7 +1063,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "d.method(d.attrib * 5);\r\n" + "}\r\n", - false); + false); } @Test @@ -1072,14 +1072,14 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var a2:* = /[a-z\\r\\n0-9\\\\]+/i;\r\n" + "var b1:* = /[0-9AB]+/;\r\n" + "var b2:* = /[0-9AB]+/;\r\n", - false); + false); } @Test public void testRest() { decompileMethod("classic", "testRest", "trace(\"firstRest:\" + restval[0]);\r\n" + "return firstp;\r\n", - false); + false); } @Test @@ -1089,7 +1089,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"is eight\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1098,7 +1098,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "this.traceIt(\"hello\" + 5 * 6);\r\n" + "this.traceIt(\"hello\" + (k - 1));\r\n" + "this.traceIt(\"hello\" + 5 + 6);\r\n", - false); + false); } @Test @@ -1108,7 +1108,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"backslash: \\\\ \");\r\n" + "trace(\"single quotes: \\'hello!\\'\");\r\n" + "trace(\"new line \\r\\n hello!\");\r\n", - false); + false); } @Test @@ -1127,7 +1127,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "case 89:\r\n" + "trace(\"eightynine\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1144,7 +1144,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "case TestSwitchComma.X, \"C\":\r\n" + "trace(\"is C\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1166,7 +1166,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "default:\r\n" + "trace(\"default clause\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1177,7 +1177,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var d:* = 78;\r\n" + "var e:* = a == b?c == d?1:7:3;\r\n" + "trace(\"e=\" + e);\r\n", - false); + false); } @Test @@ -1202,7 +1202,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"Finally part\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -1220,7 +1220,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "trace(\"in catch\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1248,7 +1248,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "return 4;\r\n" + "}\r\n", - false); + false); } @Test @@ -1291,7 +1291,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"after\");\r\n" + "return \"X\";\r\n", - false); + false); } @Test @@ -1325,7 +1325,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"after\");\r\n" + "return \"X\";\r\n", - false); + false); } @Test @@ -1336,14 +1336,14 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var a:int = 5;\r\n" + "v[a * 8 - 39] = \"hi2\";\r\n" + "trace(v[0]);\r\n", - false); + false); } @Test public void testVector2() { decompileMethod("classic", "testVector2", "var a:Vector.> = new Vector.>();\r\n" + "var b:Vector. = new [10,20,30];\r\n", - false); + false); } @Test @@ -1357,7 +1357,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "a = 7;\r\n" + "b = 9;\r\n", - false); + false); } @Test @@ -1376,7 +1376,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "}\r\n" + "return \"B\";\r\n", - false); + false); } @Test @@ -1398,7 +1398,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "trace(\"hello2\");\r\n" + "}\r\n", - false); + false); } @Test @@ -1421,7 +1421,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "continue;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test @@ -1447,7 +1447,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"after_try\");\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -1563,6 +1563,6 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "}\r\n" + "]]>\r\n" + ";\r\n", - false); + false); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java index 270e8fd75..a8d265996 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileDecompileTest.java @@ -38,7 +38,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -53,7 +53,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"catched exception: \" + e.message);\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -74,7 +74,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -91,7 +91,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "}\r\n" + "return 2;\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -121,7 +121,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -146,7 +146,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "continue;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -183,7 +183,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "a++;\r\n" + "}\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -204,7 +204,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "}\r\n" + "return \"OK\";\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -230,7 +230,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -255,7 +255,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "i++;\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -285,7 +285,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "i++;\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -308,7 +308,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -331,7 +331,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -350,7 +350,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in finally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -372,7 +372,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "return \"hu\" + str;\r\n" + "}\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -402,7 +402,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"after\");\r\n" + "i++;\r\n" + "}\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -432,7 +432,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"after\");\r\n" + "i++;\r\n" + "}\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -455,7 +455,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in finally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -470,7 +470,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in finally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -502,7 +502,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "trace(\"after\");\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -538,7 +538,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "trace(\"after\");\r\n" + "return \"RETEXIT\";\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -570,7 +570,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in finally1\");\r\n" + "}\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -622,7 +622,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "trace(\"after0\");\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test(dataProvider = "swfNamesProvider") @@ -647,6 +647,6 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in finally\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java index 01a857078..99a721e4e 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3CrossCompileSwfToolsDecompileTest.java @@ -28,7 +28,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -44,7 +44,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"catched exception: \" + _loc1_.message);\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -65,7 +65,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -82,7 +82,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "return 2;\r\n", - false); + false); } @Test @@ -112,7 +112,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -137,7 +137,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "continue;\r\n" + "}\r\n" + "}\r\n", - false); + false); } @Test @@ -174,7 +174,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "_loc1_++;\r\n" + "}\r\n", - false); + false); } @Test @@ -195,7 +195,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "return \"OK\";\r\n", - false); + false); } @Test @@ -221,7 +221,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -247,7 +247,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "_loc1_++;\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -276,7 +276,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "_loc1_++;\r\n" + "}\r\n" + "trace(\"end\");\r\n", - false); + false); } @Test @@ -299,7 +299,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -321,7 +321,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -347,7 +347,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -370,7 +370,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "}\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -394,7 +394,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"in finally\");\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -416,7 +416,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "return \"hu\" + _loc1_;\r\n" + "}\r\n", - false); + false); } @Test @@ -452,7 +452,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"after\");\r\n" + "_loc1_++;\r\n" + "}\r\n", - false); + false); } @Test @@ -482,7 +482,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"after\");\r\n" + "_loc1_++;\r\n" + "}\r\n", - false); + false); } @Test @@ -510,7 +510,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"in finally\");\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -527,7 +527,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"in finally\");\r\n" + "trace(\"after\");\r\n", - false); + false); } @Test @@ -565,7 +565,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in finally\");\r\n" + "trace(\"after\");\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test @@ -600,7 +600,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"after\");\r\n" + "return \"RETEXIT\";\r\n", - false); + false); } @Test @@ -641,7 +641,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"in finally1\");\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test @@ -708,7 +708,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in finally0\");\r\n" + "trace(\"after0\");\r\n" + "return \"RETFINAL\";\r\n", - false); + false); } @Test @@ -739,6 +739,6 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "}\r\n" + "trace(\"in finally\");\r\n" + "trace(\"after\");\r\n", - false); + false); } } diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc index 3da7f3581..26f49143f 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc and b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc differ diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm index b5546b875..f462f3840 100644 --- a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm @@ -21,5 +21,6 @@ program #include "tests/TestTryDoWhile2.script.asasm" #include "tests/TestSwitchJoin.script.asasm" #include "tests/TestDeobfuscatorJumpsExceptionStart.script.asasm" + #include "tests/TestUnnamedException.script.asasm" ; place to add next end ; program diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.class.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.class.asasm new file mode 100644 index 000000000..b820c921c --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.class.asasm @@ -0,0 +1,78 @@ +class + refid "tests:TestUnnamedException" + instance QName(PackageNamespace("tests"), "TestUnnamedException") + extends QName(PackageNamespace(""), "Object") + flag SEALED + flag PROTECTEDNS + protectedns ProtectedNamespace("tests:TestUnnamedException") + iinit + refid "tests:TestUnnamedException/instance/init" + body + maxstack 1 + localcount 1 + initscopedepth 4 + maxscopedepth 5 + code + getlocal0 + pushscope + + getlocal0 + constructsuper 0 + + returnvoid + end ; code + end ; body + end ; method + trait method QName(PackageNamespace(""), "run") + method + refid "tests:TestUnnamedException/instance/run" + returns QName(PackageNamespace(""), "void") + body + maxstack 2 + localcount 4 + initscopedepth 4 + maxscopedepth 5 + code + + getlocal0 + pushscope + pushbyte 5 + setlocal 5 + ofs005a: + findpropstrict QName(PackageNamespace(""),"trace") + pushstring "hello" + callpropvoid QName(PackageNamespace(""),"trace"), 1 + ofs016a: + jump ofs0175 + ofs016e: + getlocal0 + pushscope + getlocal2 + pushscope + coerce_a + setlocal 14 + ofs0175: + getlocal 5 + returnvalue + end ; code + try from ofs005a to ofs016a target ofs016e type null name null end + end ; body + end ; method + end ; trait + end ; instance + cinit + refid "tests:TestUnnamedException/class/init" + body + maxstack 1 + localcount 1 + initscopedepth 3 + maxscopedepth 4 + code + getlocal0 + pushscope + + returnvoid + end ; code + end ; body + end ; method +end ; class diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.script.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.script.asasm new file mode 100644 index 000000000..7a8118a69 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestUnnamedException.script.asasm @@ -0,0 +1,29 @@ +script + sinit + refid "tests:TestUnnamedException/init" + body + maxstack 2 + localcount 1 + initscopedepth 1 + maxscopedepth 3 + code + getlocal0 + pushscope + + findpropstrict Multiname("TestUnnamedException", [PackageNamespace("tests")]) + getlex QName(PackageNamespace(""), "Object") + pushscope + + getlex Multiname("Object", [PrivateNamespace(null, "tests:TestUnnamedException"), PackageNamespace(""), PackageNamespace("tests"), PackageInternalNs("tests"), Namespace("http://adobe.com/AS3/2006/builtin")]) + newclass "tests:TestUnnamedException" + popscope + initproperty QName(PackageNamespace("tests"), "TestUnnamedException") + + returnvoid + end ; code + end ; body + end ; method + trait class QName(PackageNamespace("tests"), "TestUnnamedException") + #include "TestUnnamedException.class.asasm" + end ; trait +end ; script diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf b/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf index 6f3dd61c6..f59877f9b 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf and b/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex.swf b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex.swf index 3ee487955..0e8ab6c1d 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex.swf and b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf index 556d64a2c..21cba0c23 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf and b/libsrc/ffdec_lib/testdata/as3_cross_compile/bin/as3_cross_compile.flex_apache.swf differ