diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionDefineFunctionPushRegisterCleanerTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionDefineFunctionPushRegisterCleanerTest.java index 0efa3045f..7e90b69bd 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionDefineFunctionPushRegisterCleanerTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionDefineFunctionPushRegisterCleanerTest.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash; import com.jpexs.decompiler.flash.action.Action; @@ -109,7 +110,7 @@ public class ActionDefineFunctionPushRegisterCleanerTest extends ActionScript2Te + "{\r\n" + "return _loc2_ + 7;\r\n" + "}\r\n" - + "_loc1_ = _loc1_ + 27;\r\n" + + "_loc1_ += 27;\r\n" + "_loc1_ = _loc1_ + 1;\r\n" + "}\r\n" + "}\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 4a841e451..0220cc856 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -435,8 +435,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "var c = --i + 5;\r\n" + "trace(\"a:\" + a + \" b:\" + b + \" c:\" + c);\r\n" + "var arr = [1,2,3];\r\n" - + "arr[tst()]++;\r\n" - + "var d = arr[tst()];\r\n" + + "var d = arr[tst()]++;\r\n" + "trace(d);\r\n" ); } @@ -474,7 +473,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "{\r\n" + "return undefined;\r\n" + "}\r\n" - + "_loc1_ = _loc1_ * 9;\r\n" + + "_loc1_ *= 9;\r\n" + "trace(_loc1_);\r\n" + "}\r\n" + "trace(\"function2Test\");\r\n" @@ -555,7 +554,7 @@ public class ActionScript2Test extends ActionScript2TestBase { compareSrc(49, "function tst(px)\r\n" + "{\r\n" + "var _loc1_ = 57;\r\n" - + "_loc1_ = _loc1_ * 27;\r\n" + + "_loc1_ *= 27;\r\n" + "}\r\n" + "trace(\"registersFuncTest\");\r\n" + "tst(5);\r\n" @@ -603,7 +602,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "while(true)\r\n" + "{\r\n" + "a++;\r\n" - + "b = b + 2;\r\n" + + "b += 2;\r\n" + "if(c >= 10)\r\n" + "{\r\n" + "break;\r\n" @@ -680,7 +679,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "{\r\n" + "break;\r\n" + "}\r\n" - + "k = k * 5;\r\n" + + "k *= 5;\r\n" + "trace(k);\r\n" + "}\r\n" + "trace(\"end\");\r\n" @@ -706,7 +705,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" + "k++;\r\n" + "}\r\n" - + "while(k = k + 5, k < 20);\r\n" + + "while(k += 5, k < 20);\r\n" + "trace(\"end\");\r\n" ); } @@ -1875,7 +1874,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "var a = 5;\r\n" + "try\r\n" + "{\r\n" - + "a = a / 0;\r\n" + + "a /= 0;\r\n" + "}\r\n" + "catch(e)\r\n" + "{\r\n" @@ -1883,7 +1882,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" + "try\r\n" + "{\r\n" - + "a = a / 0;\r\n" + + "a /= 0;\r\n" + "}\r\n" + "catch(e)\r\n" + "{\r\n" @@ -1898,7 +1897,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" + "try\r\n" + "{\r\n" - + "a = a / 0;\r\n" + + "a /= 0;\r\n" + "}\r\n" + "catch(e:MyError)\r\n" + "{\r\n" @@ -1906,7 +1905,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" + "try\r\n" + "{\r\n" - + "a = a / 0;\r\n" + + "a /= 0;\r\n" + "}\r\n" + "catch(e1:MyError)\r\n" + "{\r\n" @@ -1918,7 +1917,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" + "try\r\n" + "{\r\n" - + "a = a / 0;\r\n" + + "a /= 0;\r\n" + "}\r\n" + "catch(e:MyError)\r\n" + "{\r\n" @@ -2164,4 +2163,24 @@ public class ActionScript2Test extends ActionScript2TestBase { + "b = XUpdateResolver(a);\r\n" ); } + + @Test + public void frame76_compoundAssignmentsTest() { + compareSrc(76, "function f()\r\n" + + "{\r\n" + + "trace(arguments[0]);\r\n" + + "var _loc2_ = 0;\r\n" + + "_loc2_ += 20;\r\n" + + "var _loc3_ = _loc2_ += 20;\r\n" + + "}\r\n" + + "trace(\"compoundAssignmentsTest\");\r\n" + + "var a = 0;\r\n" + + "a += 5;\r\n" + + "var x = a += 5;\r\n" + + "a.b.c += 10;\r\n" + + "x = a.b.c += 10;\r\n" + + "f(5);\r\n" + + "trace(a.b.c += 30);\r\n" + ); + } } 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 4ae5cc78f..4bd0bae00 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 @@ -79,7 +79,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile public void testComplexExpressions() { decompileMethod("classic_air", "testComplexExpressions", "var i:int = 0;\r\n" + "var j:int = 0;\r\n" - + "j = i = i + (i = i + i++);\r\n", + + "j = i += i += i++;\r\n", + false); + } + + @Test + public void testCompoundAssignments() { + decompileMethod("classic_air", "testCompoundAssignments", "var a:int = 0;\r\n" + + "trace(a += 10);\r\n", false); } @@ -106,7 +113,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "{\r\n" + "break loop3;\r\n" + "}\r\n" - + "b = b + 1;\r\n" + + "b += 1;\r\n" + "}\r\n" + "break;\r\n" + "case 13:\r\n" @@ -121,7 +128,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "trace(\"default clause\");\r\n" + "}\r\n" + "loop1:\r\n" - + "for(c = 0; c < 8; c = c + 1)\r\n" + + "for(c = 0; c < 8; c += 1)\r\n" + "{\r\n" + "for(d = 0; d < 25; d++)\r\n" + "{\r\n" @@ -153,7 +160,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile public void testDecl2() { decompileMethod("classic_air", "testDecl2", "var k:int = 0;\r\n" + "var i:int = 5;\r\n" - + "i = i + 7;\r\n" + + "i += 7;\r\n" + "if(i == 5)\r\n" + "{\r\n" + "if(i < 8)\r\n" @@ -306,7 +313,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile decompileMethod("classic_air", "testExpressions", "var arr:Array = null;\r\n" + "var i:int = 5;\r\n" + "var j:int = 5;\r\n" - + "if((i = i = i / 2) == 1 || i == 2)\r\n" + + "if((i = i /= 2) == 1 || i == 2)\r\n" + "{\r\n" + "arguments.concat(i);\r\n" + "}\r\n" @@ -399,7 +406,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testForContinue() { decompileMethod("classic_air", "testForContinue", "var a:* = undefined;\r\n" - + "for(a = 0; a < 10; a = a + 1)\r\n" + + "for(a = 0; a < 10; a += 1)\r\n" + "{\r\n" + "if(a == 9)\r\n" + "{\r\n" 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 a93dbcbd6..d61a3b019 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 @@ -83,6 +83,13 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testCompoundAssignments() { + decompileMethod("classic", "testCompoundAssignments", "var a:int = 0;\r\n" + + "trace(a = a + 10);\r\n", + false); + } + @Test public void testContinueLevels() { decompileMethod("classic", "testContinueLevels", "var b:* = undefined;\r\n" @@ -106,7 +113,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "break loop3;\r\n" + "}\r\n" - + "b = b + 1;\r\n" + + "b += 1;\r\n" + "}\r\n" + "break;\r\n" + "case 13:\r\n" @@ -121,7 +128,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "trace(\"default clause\");\r\n" + "}\r\n" + "loop1:\r\n" - + "for(c = 0; c < 8; c = c + 1)\r\n" + + "for(c = 0; c < 8; c += 1)\r\n" + "{\r\n" + "for(d = 0; d < 25; d++)\r\n" + "{\r\n" @@ -151,7 +158,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes public void testDecl2() { decompileMethod("classic", "testDecl2", "var k:int = 0;\r\n" + "var i:int = 5;\r\n" - + "i = i + 7;\r\n" + + "i += 7;\r\n" + "if(i == 5)\r\n" + "{\r\n" + "if(i < 8)\r\n" @@ -394,7 +401,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testForContinue() { - decompileMethod("classic", "testForContinue", "for(var a:* = 0; a < 10; a = a + 1)\r\n" + decompileMethod("classic", "testForContinue", "for(var a:* = 0; a < 10; a += 1)\r\n" + "{\r\n" + "if(a == 9)\r\n" + "{\r\n" @@ -911,7 +918,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "{\r\n" + "var second:String = null;\r\n" + "second = \"value2\";\r\n" - + "second = second + \"cc\";\r\n" + + "second += \"cc\";\r\n" + "var traceParam2:Function = function(bParam:String):String\r\n" + "{\r\n" + "trace(bParam + \",\" + aParam);\r\n" 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 af068835b..e867245f6 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 @@ -526,7 +526,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "}\r\n" + "catch(e:Error)\r\n" + "{\r\n" - + "attrib = attrib + 1;\r\n" + + "attrib += 1;\r\n" + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after try\");\r\n" @@ -587,7 +587,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "trace(\"in try\");\r\n" + "if(i == 5)\r\n" + "{\r\n" - + "i = i + 5;\r\n" + + "i += 5;\r\n" + "trace(\"continue while\");\r\n" + "continue;\r\n" + "}\r\n" @@ -624,7 +624,7 @@ public class ActionScript3CrossCompileDecompileTest extends ActionScript3Decompi + "{\r\n" + "if(i == 5)\r\n" + "{\r\n" - + "i = i + 7;\r\n" + + "i += 7;\r\n" + "trace(\"continue while\");\r\n" + "continue;\r\n" + "}\r\n" 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 81fd56421..bbf4b16bc 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 @@ -521,7 +521,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "with(_loc2_)\r\n" + "{\r\n" + "\r\n" - + "attrib = attrib + 1;\r\n" + + "attrib += 1;\r\n" + "trace(\"in catch\");\r\n" + "}\r\n" + "trace(\"after try\");\r\n" @@ -589,7 +589,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "trace(\"in try\");\r\n" + "if(_loc1_ == 5)\r\n" + "{\r\n" - + "_loc1_ = _loc1_ + 5;\r\n" + + "_loc1_ += 5;\r\n" + "trace(\"continue while\");\r\n" + "trace(\"in finally\");\r\n" + "continue;\r\n" @@ -630,7 +630,7 @@ public class ActionScript3CrossCompileSwfToolsDecompileTest extends ActionScript + "{\r\n" + "if(_loc1_ == 5)\r\n" + "{\r\n" - + "_loc1_ = _loc1_ + 7;\r\n" + + "_loc1_ += 7;\r\n" + "trace(\"continue while\");\r\n" + "continue;\r\n" + "}\r\n"