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 b31c94b74..8c05867c6 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
@@ -1471,6 +1471,67 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile
false);
}
+ @Test
+ public void testOperations() {
+ decompileMethod("classic_air", "testOperations", "var cr:MyClass = null;\r\n"
+ + "var br:* = false;\r\n"
+ + "var r:Number = NaN;\r\n"
+ + "var xlr:XMLList = null;\r\n"
+ + "var c:MyClass = new MyClass();\r\n"
+ + "var d:Dictionary = new Dictionary();\r\n"
+ + "var n1:Number = 2;\r\n"
+ + "var n2:Number = 3;\r\n"
+ + "var b1:Boolean = true;\r\n"
+ + "var b2:Boolean = false;\r\n"
+ + "var x:XML = \r\n"
+ + "one\r\n"
+ + "\r\n"
+ + "two\r\n"
+ + "\r\n"
+ + "\r\n"
+ + "three\r\n"
+ + ";\r\n"
+ + "cr = c as MyClass;\r\n"
+ + "br = \"hello\" in d;\r\n"
+ + "r = b1 ? n1 : n2;\r\n"
+ + "r = n1 << n2;\r\n"
+ + "r = n1 >> n2;\r\n"
+ + "r = n1 >>> n2;\r\n"
+ + "r = n1 & n2;\r\n"
+ + "r = n1 | n2;\r\n"
+ + "r = n1 / n2;\r\n"
+ + "r = n1 % n2;\r\n"
+ + "br = n1 == n2;\r\n"
+ + "br = n1 === n2;\r\n"
+ + "br = n1 != n2;\r\n"
+ + "br = n1 !== n2;\r\n"
+ + "br = n1 < n2;\r\n"
+ + "br = n1 <= n2;\r\n"
+ + "br = n1 > n2;\r\n"
+ + "br = n1 >= n2;\r\n"
+ + "br = b1 && b2;\r\n"
+ + "br = b1 || b2;\r\n"
+ + "r = n1 - n2;\r\n"
+ + "r = n1 * n2;\r\n"
+ + "r = n1 + n2;\r\n"
+ + "r = n1 ^ n2;\r\n"
+ + "br = c instanceof MyClass;\r\n"
+ + "br = c is MyClass;\r\n"
+ + "xlr = x..b;\r\n"
+ + "r &= n1;\r\n"
+ + "r |= n1;\r\n"
+ + "r /= n1;\r\n"
+ + "r -= n1;\r\n"
+ + "r %= n1;\r\n"
+ + "r *= n1;\r\n"
+ + "r += n1;\r\n"
+ + "r <<= n1;\r\n"
+ + "r >>= n1;\r\n"
+ + "r >>>= n1;\r\n"
+ + "r ^= n1;\r\n",
+ false);
+ }
+
@Test
public void testParamNames() {
decompileMethod("classic_air", "testParamNames", "return firstp + secondp + thirdp;\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 3283cc143..abef1bf30 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
@@ -1463,6 +1463,67 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes
false);
}
+ @Test
+ public void testOperations() {
+ decompileMethod("classic", "testOperations", "var cr:MyClass = null;\r\n"
+ + "var br:Boolean = false;\r\n"
+ + "var r:Number = NaN;\r\n"
+ + "var xlr:XMLList = null;\r\n"
+ + "var c:MyClass = new MyClass();\r\n"
+ + "var d:Dictionary = new Dictionary();\r\n"
+ + "var n1:Number = 2;\r\n"
+ + "var n2:Number = 3;\r\n"
+ + "var b1:Boolean = true;\r\n"
+ + "var b2:Boolean = false;\r\n"
+ + "var x:XML = \r\n"
+ + "one\r\n"
+ + "\r\n"
+ + "two\r\n"
+ + "\r\n"
+ + "\r\n"
+ + "three\r\n"
+ + ";\r\n"
+ + "cr = c as MyClass;\r\n"
+ + "br = \"hello\" in d;\r\n"
+ + "r = b1 ? n1 : n2;\r\n"
+ + "r = n1 << n2;\r\n"
+ + "r = n1 >> n2;\r\n"
+ + "r = n1 >>> n2;\r\n"
+ + "r = n1 & n2;\r\n"
+ + "r = n1 | n2;\r\n"
+ + "r = n1 / n2;\r\n"
+ + "r = n1 % n2;\r\n"
+ + "br = n1 == n2;\r\n"
+ + "br = n1 === n2;\r\n"
+ + "br = n1 != n2;\r\n"
+ + "br = n1 !== n2;\r\n"
+ + "br = n1 < n2;\r\n"
+ + "br = n1 <= n2;\r\n"
+ + "br = n1 > n2;\r\n"
+ + "br = n1 >= n2;\r\n"
+ + "br = b1 && b2;\r\n"
+ + "br = b1 || b2;\r\n"
+ + "r = n1 - n2;\r\n"
+ + "r = n1 * n2;\r\n"
+ + "r = n1 + n2;\r\n"
+ + "r = n1 ^ n2;\r\n"
+ + "br = c instanceof MyClass;\r\n"
+ + "br = c is MyClass;\r\n"
+ + "xlr = x..b;\r\n"
+ + "r &= n1;\r\n"
+ + "r |= n1;\r\n"
+ + "r /= n1;\r\n"
+ + "r -= n1;\r\n"
+ + "r %= n1;\r\n"
+ + "r *= n1;\r\n"
+ + "r += n1;\r\n"
+ + "r <<= n1;\r\n"
+ + "r >>= n1;\r\n"
+ + "r >>>= n1;\r\n"
+ + "r ^= n1;\r\n",
+ false);
+ }
+
@Test
public void testParamNames() {
decompileMethod("classic", "testParamNames", "return firstp + secondp + thirdp;\r\n",
diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf
index 8aa5abebc..344b12d8f 100644
Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ
diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf
index 3958f1885..05cecf0a4 100644
Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ
diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
index 3ad310fd9..7f07d26e3 100644
--- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
+++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
@@ -90,6 +90,7 @@ package
TestNames2;
TestNegate;
TestNumberCall;
+ TestOperations;
TestOptionalParameters;
TestParamNames;
TestParamsCount;
diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as
new file mode 100644
index 000000000..aea21cd07
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as
@@ -0,0 +1,76 @@
+package tests
+{
+ import flash.utils.Dictionary;
+
+ public class TestOperations
+ {
+ public function run():*
+ {
+ var c:MyClass = new MyClass();
+ var cr:MyClass;
+ var d:Dictionary = new Dictionary();
+ var n1:Number = 2;
+ var n2:Number = 3;
+ var b1:Boolean = true;
+ var b2:Boolean = false;
+ var br:Boolean;
+ var r:Number;
+ var x:XML =
+ one
+
+ two
+
+
+ three
+ ;
+ var xlr:XMLList;
+
+ cr = c as MyClass;
+ br = "hello" in d;
+
+ r = b1 ? n1 : n2;
+ r = n1 << n2;
+ r = n1 >> n2;
+ r = n1 >>> n2;
+ r = n1 & n2;
+ r = n1 | n2;
+ r = n1 / n2;
+ r = n1 % n2;
+ br = n1 == n2;
+ br = n1 === n2;
+ br = n1 != n2;
+ br = n1 !== n2;
+ br = n1 < n2;
+ br = n1 <= n2;
+ br = n1 > n2;
+ br = n1 >= n2;
+ br = b1 && b2;
+ br = b1 || b2;
+ r = n1 - n2;
+ r = n1 * n2;
+ r = n1 + n2;
+ r = n1 ^ n2;
+ br = c instanceof MyClass;
+ br = c is MyClass;
+ xlr = x..b;
+
+
+ r &= n1;
+ r |= n1;
+ r /= n1;
+ r -= n1;
+ r %= n1;
+ r *= n1;
+ r += n1;
+ r <<= n1;
+ r >>= n1;
+ r >>>= n1;
+ r ^= n1;
+
+
+ }
+ }
+}
+
+class MyClass {
+}
\ No newline at end of file