diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ac23128b..59c46ffa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. - DefineEditText - ampersand in link href - AS1/2 - cannot use globalfunc/const variable names - AS2 - class detection when no constructor found +- AS1/2 - subtract precedence ## [14.6.0] - 2021-11-22 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java index 048c1f031..67ba02ff5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java @@ -55,10 +55,19 @@ public class SubtractActionItem extends BinaryOpItem implements CompoundableBina if ((leftSide instanceof DirectValueActionItem) && (((((DirectValueActionItem) leftSide).value instanceof Float) && (((Float) ((DirectValueActionItem) leftSide).value) == 0f)) || ((((DirectValueActionItem) leftSide).value instanceof Double) && (((Double) ((DirectValueActionItem) leftSide).value) == 0.0)) - || ((((DirectValueActionItem) leftSide).value instanceof Long) && (((Long) ((DirectValueActionItem) leftSide).value) == 0L)))) { + || ((((DirectValueActionItem) leftSide).value instanceof Long) && (((Long) ((DirectValueActionItem) leftSide).value) == 0L)) + || ((DirectValueActionItem) leftSide).isString() && "0".equals(((DirectValueActionItem) leftSide).toString()))) { writer.append(operator); writer.append(" "); - rightSide.appendTry(writer, localData); + + int rightPrecedence = rightSide.getPrecedence(); + if (rightPrecedence >= precedence && rightPrecedence != GraphTargetItem.NOPRECEDENCE) { + writer.append("("); + rightSide.toString(writer, localData, coerceRight); + writer.append(")"); + } else { + rightSide.toString(writer, localData, coerceRight); + } return writer; } else if (rightSide.getPrecedence() >= precedence) { // >= add or subtract too