From 0085aedca0d8ad9197601a73c5f96861e0ba57fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Tue, 16 Jul 2013 13:24:37 +0200 Subject: [PATCH] Issue #237 Substract parentheses Fix --- .../avm2/model/operations/AddAVM2Item.java | 17 ------------- .../model/operations/SubtractAVM2Item.java | 24 +++++++++++-------- .../model/operations/SubtractActionItem.java | 24 +++++++++++-------- .../decompiler/graph/model/BinaryOpItem.java | 3 +++ 4 files changed, 31 insertions(+), 37 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java index 1b32f3501..c98f6ba39 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java @@ -29,23 +29,6 @@ public class AddAVM2Item extends BinaryOpItem { super(instruction, PRECEDENCE_ADDITIVE, leftSide, rightSide, "+"); } - @Override - public String toString(List localData) { - if (rightSide.precedence >= precedence) { - String ret = ""; - if (leftSide.precedence > precedence) { - ret += "(" + leftSide.toString(localData) + ")"; - } else { - ret += leftSide.toString(localData); - } - ret += hilight(operator); - ret += "(" + rightSide.toString(localData) + ")"; - return ret; - } else { - return super.toString(localData); - } - } - @Override public Object getResult() { if (EcmaScript.type(leftSide.getResult()) == EcmaType.STRING || EcmaScript.type(rightSide.getResult()) == EcmaType.STRING) { diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java index 526e0b90b..4671af0a2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java @@ -35,17 +35,21 @@ public class SubtractAVM2Item extends BinaryOpItem { @Override public String toString(List localData) { - if (!(getLeftMostItem(rightSide) instanceof NegAVM2Item)) { // a - (-b*c*d) + if (rightSide.precedence >= precedence) { // >= add or subtract too + String ret = ""; + if (leftSide.precedence > precedence) { + ret += "(" + leftSide.toString(localData) + ")"; + } else { + ret += leftSide.toString(localData); + } + ret += " "; + ret += hilight(operator); + ret += " "; + + ret += "(" + rightSide.toString(localData) + ")"; + return ret; + } else { return super.toString(localData); } - String ret = ""; - if (leftSide.getPrecedence() > precedence) { - ret += "(" + leftSide.toString(localData) + ")"; - } else { - ret += leftSide.toString(localData); - } - ret += hilight(operator); - ret += "(" + rightSide.toString(localData) + ")"; - return ret; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java index bd4b6333b..3e102e23e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java @@ -38,18 +38,22 @@ public class SubtractActionItem extends BinaryOpItem { @Override public String toString(List localData) { - if (rightSide instanceof DirectValueActionItem) { + if (rightSide.precedence >= precedence) { // >= add or subtract too + String ret = ""; + if (leftSide.precedence > precedence) { + ret += "(" + leftSide.toString(localData) + ")"; + } else { + ret += leftSide.toString(localData); + } + ret += " "; + ret += hilight(operator); + ret += " "; + + ret += "(" + rightSide.toString(localData) + ")"; + return ret; + } else { return super.toString(localData); } - String ret = ""; - if (leftSide.getPrecedence() > precedence) { - ret += "(" + leftSide.toString(localData) + ")"; - } else { - ret += leftSide.toString(localData); - } - ret += hilight(operator); - ret += "(" + rightSide.toString(localData) + ")"; - return ret; } @Override diff --git a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java index 24d2ef168..97ef1f5ef 100644 --- a/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java +++ b/trunk/src/com/jpexs/decompiler/graph/model/BinaryOpItem.java @@ -52,7 +52,10 @@ public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp { } else { ret += leftSide.toString(localData); } + + ret += " "; ret += hilight(operator); + ret += " "; if (rightSide.getPrecedence() > precedence) { ret += "(" + rightSide.toString(localData) + ")";