From b6b62b288f9fa2c79bd9f76a733e10ee9cae57bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 16 Feb 2016 23:07:00 +0100 Subject: [PATCH] #1145 Correct precedence handling on binary operators --- .../com/jpexs/decompiler/graph/model/BinaryOpItem.java | 2 +- .../com/jpexs/decompiler/flash/ActionScript3Test.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java index c28e1573c..ecb353a03 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java @@ -83,7 +83,7 @@ public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { writer.append(" "); int rightPrecedence = rightSide.getPrecedence(); - if (rightPrecedence > precedence && rightPrecedence != GraphTargetItem.NOPRECEDENCE) { + if (rightPrecedence >= precedence && rightPrecedence != GraphTargetItem.NOPRECEDENCE) { writer.append("("); rightSide.toString(writer, localData); writer.append(")"); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java index 150b63b3d..76263edbf 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java @@ -1186,4 +1186,13 @@ public class ActionScript3Test extends ActionScriptTestBase { + "trace(String(this).length);\r\n", false); } + @Test + public void testPrecedenceX() { + decompileMethod("testPrecedenceX", "var a:* = 5;\r\n" + + "var b:* = 2;\r\n" + + "var c:* = 3;\r\n" + + "var d:* = a << (b >>> c);\r\n" + + "var e:* = a << b >>> c;\r\n", false); + } + }