mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-02 00:44:51 +00:00
Issue #866 Unary operators associativity fix (! for example)
This commit is contained in:
@@ -2042,7 +2042,7 @@ public class ActionScriptParser {
|
||||
allowMemberOrCall = true;
|
||||
break;
|
||||
case NEGATE:
|
||||
ret = expression(thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, false, variables);
|
||||
ret = expressionPrimary(thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, false, variables);
|
||||
ret = new NegAVM2Item(null, ret);
|
||||
|
||||
break;
|
||||
@@ -2056,7 +2056,7 @@ public class ActionScriptParser {
|
||||
|
||||
} else {
|
||||
lexer.pushback(s);
|
||||
GraphTargetItem num = expression(thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables);
|
||||
GraphTargetItem num = expressionPrimary(thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, true, variables);
|
||||
if (num instanceof IntegerValueAVM2Item) {
|
||||
((IntegerValueAVM2Item) num).value = -((IntegerValueAVM2Item) num).value;
|
||||
ret = num;
|
||||
@@ -2074,7 +2074,7 @@ public class ActionScriptParser {
|
||||
}
|
||||
break;
|
||||
case TYPEOF:
|
||||
ret = new TypeOfAVM2Item(null, expression(thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, false, variables));
|
||||
ret = new TypeOfAVM2Item(null, expressionPrimary(thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, false, variables));
|
||||
break;
|
||||
case TRUE:
|
||||
ret = new BooleanAVM2Item(null, true);
|
||||
@@ -2153,7 +2153,7 @@ public class ActionScriptParser {
|
||||
|
||||
break;
|
||||
case DELETE:
|
||||
GraphTargetItem varDel = expression(thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables);//name(thisType,false, openedNamespaces, registerVars, inFunction, inMethod, variables);
|
||||
GraphTargetItem varDel = expressionPrimary(thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, true, variables);//name(thisType,false, openedNamespaces, registerVars, inFunction, inMethod, variables);
|
||||
if (!isNameOrProp(varDel)) {
|
||||
throw new AVM2ParseException("Not a property or name", lexer.yyline());
|
||||
}
|
||||
@@ -2174,7 +2174,7 @@ public class ActionScriptParser {
|
||||
|
||||
break;
|
||||
case NOT:
|
||||
ret = new NotItem(null, expression(thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, false, variables));
|
||||
ret = new NotItem(null, expressionPrimary(thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, false, variables));
|
||||
|
||||
break;
|
||||
case PARENT_OPEN:
|
||||
|
||||
@@ -1572,7 +1572,7 @@ public class ActionScriptParser {
|
||||
switch (s.type) {
|
||||
case NEGATE:
|
||||
versionRequired(s, 5);
|
||||
ret = expression(inFunction, inMethod, false, variables);
|
||||
ret = expressionPrimary(false, inFunction, inMethod, false, variables);
|
||||
ret = new BitXorActionItem(null, ret, new DirectValueActionItem(4.294967295E9));
|
||||
|
||||
break;
|
||||
@@ -1586,7 +1586,7 @@ public class ActionScriptParser {
|
||||
|
||||
} else {
|
||||
lexer.pushback(s);
|
||||
GraphTargetItem num = expression(inFunction, inMethod, true, variables);
|
||||
GraphTargetItem num = expressionPrimary(false, inFunction, inMethod, true, variables);
|
||||
if ((num instanceof DirectValueActionItem)
|
||||
&& (((DirectValueActionItem) num).value instanceof Long)) {
|
||||
((DirectValueActionItem) num).value = -(Long) ((DirectValueActionItem) num).value;
|
||||
@@ -1610,7 +1610,7 @@ public class ActionScriptParser {
|
||||
}
|
||||
break;
|
||||
case TYPEOF:
|
||||
ret = new TypeOfActionItem(null, expression(inFunction, inMethod, false, variables));
|
||||
ret = new TypeOfActionItem(null, expressionPrimary(false, inFunction, inMethod, false, variables));
|
||||
allowMemberOrCall = true;
|
||||
break;
|
||||
case TRUE:
|
||||
@@ -1689,7 +1689,7 @@ public class ActionScriptParser {
|
||||
|
||||
break;
|
||||
case DELETE:
|
||||
GraphTargetItem varDel = expression(inFunction, inMethod, false, variables);
|
||||
GraphTargetItem varDel = expressionPrimary(false, inFunction, inMethod, false, variables);
|
||||
if (varDel instanceof GetMemberActionItem) {
|
||||
GetMemberActionItem gm = (GetMemberActionItem) varDel;
|
||||
ret = new DeleteActionItem(null, gm.object, gm.memberName);
|
||||
@@ -1709,7 +1709,7 @@ public class ActionScriptParser {
|
||||
|
||||
break;
|
||||
case NOT:
|
||||
ret = new NotItem(null, expression(inFunction, inMethod, false, variables));
|
||||
ret = new NotItem(null, expressionPrimary(false, inFunction, inMethod, false, variables));
|
||||
|
||||
break;
|
||||
case PARENT_OPEN:
|
||||
@@ -1744,7 +1744,7 @@ public class ActionScriptParser {
|
||||
case THIS:
|
||||
case SUPER:
|
||||
if (s.value.equals("not")) {
|
||||
ret = new NotItem(null, expression(inFunction, inMethod, false, variables));
|
||||
ret = new NotItem(null, expressionPrimary(false, inFunction, inMethod, false, variables));
|
||||
} else {
|
||||
ret = new VariableActionItem(s.value.toString(), null, false);
|
||||
variables.add((VariableActionItem) ret);
|
||||
|
||||
Reference in New Issue
Block a user