mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 04:11:13 +00:00
AS3 parser - assign fix
This commit is contained in:
@@ -1450,10 +1450,14 @@ public class ActionScriptParser {
|
||||
if (!(expr instanceof AssignableAVM2Item)) {
|
||||
throw new ParseException("Invalid assignment", lexer.yyline());
|
||||
}
|
||||
((AssignableAVM2Item) expr).setAssignedValue(assigned);
|
||||
AssignableAVM2Item as = ((AssignableAVM2Item)expr).copy();
|
||||
if(as instanceof NameAVM2Item){
|
||||
variables.add((NameAVM2Item)as);
|
||||
}
|
||||
as.setAssignedValue(assigned);
|
||||
if (expr instanceof NameAVM2Item) {
|
||||
((NameAVM2Item) expr).setDefinition(false);
|
||||
ret = expr;
|
||||
ret = as;
|
||||
}
|
||||
ret = expr;
|
||||
break;
|
||||
|
||||
@@ -49,6 +49,8 @@ public abstract class AssignableAVM2Item extends AVM2Item {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public abstract AssignableAVM2Item copy();
|
||||
|
||||
public AssignableAVM2Item(GraphTargetItem storeValue) {
|
||||
super(null, PRECEDENCE_PRIMARY);
|
||||
this.assignedValue = storeValue;
|
||||
|
||||
@@ -65,6 +65,19 @@ public class NameAVM2Item extends AssignableAVM2Item {
|
||||
|
||||
public GraphTargetItem redirect;
|
||||
|
||||
@Override
|
||||
public AssignableAVM2Item copy() {
|
||||
NameAVM2Item c = new NameAVM2Item(type, line, variableName, assignedValue, definition, openedNamespaces);
|
||||
c.setNs(ns);
|
||||
c.regNumber = regNumber;
|
||||
c.unresolved = unresolved;
|
||||
c.nsKind = nsKind;
|
||||
c.setIndex(index);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setNs(GraphTargetItem ns) {
|
||||
this.ns = ns;
|
||||
}
|
||||
|
||||
@@ -59,6 +59,14 @@ public class PropertyAVM2Item extends AssignableAVM2Item {
|
||||
public GraphTargetItem index;
|
||||
private List<Integer> openedNamespaces;
|
||||
|
||||
@Override
|
||||
public AssignableAVM2Item copy() {
|
||||
PropertyAVM2Item p =new PropertyAVM2Item(object, propertyName, index, abc, otherABCs, openedNamespaces);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public PropertyAVM2Item(GraphTargetItem object, String propertyName, GraphTargetItem index, ABC abc, List<ABC> otherABCs, List<Integer> openedNamespaces) {
|
||||
this.propertyName = propertyName;
|
||||
this.object = object;
|
||||
|
||||
Reference in New Issue
Block a user