Fixed #1762 AS call on integer numbers parenthesis

This commit is contained in:
Jindra Petřík
2021-12-01 08:44:30 +01:00
parent 2011684b7f
commit 1928962d6f
17 changed files with 65 additions and 8 deletions

View File

@@ -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.abc.avm2.model;
import com.jpexs.decompiler.flash.IdentifiersDeobfuscation;
@@ -89,7 +90,7 @@ public abstract class AVM2Item extends GraphTargetItem {
}
if (!empty && object != null) {
if (!empty && object != null) {
if (object.getPrecedence() > PRECEDENCE_PRIMARY || (object instanceof IntegerValueAVM2Item)) {
writer.append("(");
object.toString(writer, localData);
writer.append(")");

View File

@@ -52,7 +52,13 @@ public class CallMethodAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
receiver.toString(writer, localData);
if (receiver.getPrecedence() > getPrecedence() || (receiver instanceof IntegerValueAVM2Item)) {
writer.append("(");
receiver.toString(writer, localData);
writer.append(")");
} else {
receiver.toString(writer, localData);
}
writer.append(".");
writer.append(methodName);
writer.spaceBeforeCallParenthesies(arguments.size());

View File

@@ -52,7 +52,13 @@ public class CallStaticAVM2Item extends AVM2Item {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
receiver.toString(writer, localData);
if (receiver.getPrecedence() > getPrecedence() || (receiver instanceof IntegerValueAVM2Item)) {
writer.append("(");
receiver.toString(writer, localData);
writer.append(")");
} else {
receiver.toString(writer, localData);
}
writer.append(".");
writer.append(methodName);
writer.spaceBeforeCallParenthesies(arguments.size());

View File

@@ -71,7 +71,8 @@ public class CallMethodActionItem extends ActionItem {
}
if (!blankMethod) {
if (scriptObject.getPrecedence() > this.precedence) {
if (scriptObject.getPrecedence() > this.precedence
|| ((scriptObject instanceof DirectValueActionItem) && (((DirectValueActionItem) scriptObject).value instanceof Long))) {
writer.append("(");
scriptObject.toString(writer, localData);
writer.append(")");

View File

@@ -91,7 +91,13 @@ public class SetMemberActionItem extends ActionItem implements SetTypeActionItem
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
object.toString(writer, localData);
if (((object instanceof DirectValueActionItem) && (((DirectValueActionItem) object).value instanceof Long))) {
writer.append("(");
object.toString(writer, localData);
writer.append(")");
} else {
object.toString(writer, localData);
}
if ((!(objectName instanceof DirectValueActionItem)) || (!((DirectValueActionItem) objectName).isString()) || (!IdentifiersDeobfuscation.isValidName(false, ((DirectValueActionItem) objectName).toStringNoQuotes(localData)))) {
writer.append("[");