Set super fix - it's settype (works with chained assignments)

This commit is contained in:
Jindra Petřík
2021-01-24 19:11:23 +01:00
parent ada687db7a
commit f51644caeb

View File

@@ -16,24 +16,45 @@
*/
package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.ABC;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item;
import com.jpexs.decompiler.flash.abc.types.MethodBody;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
import com.jpexs.decompiler.graph.DottedChain;
import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.GraphTargetVisitorInterface;
import com.jpexs.decompiler.graph.TypeItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
import java.util.Stack;
/**
*
* @author JPEXS
*/
public class SetSuperAVM2Item extends AVM2Item {
public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item {
public GraphTargetItem object;
public FullMultinameAVM2Item propertyName;
public DeclarationAVM2Item declaration;
@Override
public DeclarationAVM2Item getDeclaration() {
return declaration;
}
@Override
public void setDeclaration(DeclarationAVM2Item declaration) {
this.declaration = declaration;
}
@Override
public void visit(GraphTargetVisitorInterface visitor) {
visitor.visit(object);
@@ -80,4 +101,14 @@ public class SetSuperAVM2Item extends AVM2Item {
public boolean hasReturnValue() {
return false;
}
@Override
public GraphTargetItem getObject() {
return new GetSuperAVM2Item(getInstruction(), getLineStartIns(), object, propertyName);
}
@Override
public GraphTargetItem getValue() {
return value;
}
}