mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-19 19:22:18 +00:00
Fixed #2148 AS2 Do not return undefined for setters
This commit is contained in:
@@ -37,7 +37,9 @@ import com.jpexs.decompiler.flash.action.model.clauses.ClassActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.InterfaceActionItem;
|
||||
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
|
||||
import com.jpexs.decompiler.flash.ecma.Null;
|
||||
import com.jpexs.decompiler.flash.ecma.Undefined;
|
||||
import com.jpexs.decompiler.flash.helpers.collections.MyEntry;
|
||||
import com.jpexs.decompiler.graph.AbstractGraphTargetVisitor;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.model.CommaExpressionItem;
|
||||
import com.jpexs.decompiler.graph.model.IfItem;
|
||||
@@ -620,6 +622,25 @@ public class ActionScript2ClassDetector {
|
||||
func.isSetter = true;
|
||||
|
||||
if (FunctionActionItem.DECOMPILE_GET_SET) {
|
||||
|
||||
AbstractGraphTargetVisitor visitor = new AbstractGraphTargetVisitor() {
|
||||
@Override
|
||||
public void visit(GraphTargetItem item) {
|
||||
if (item instanceof ReturnActionItem) {
|
||||
ReturnActionItem ret = (ReturnActionItem) item;
|
||||
if (ret.value instanceof DirectValueActionItem) {
|
||||
DirectValueActionItem dv = (DirectValueActionItem) ret.value;
|
||||
if (dv.value instanceof Undefined) {
|
||||
ret.value = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
for (GraphTargetItem ti : func.actions) {
|
||||
ti.visitRecursively(visitor);
|
||||
}
|
||||
|
||||
//There is return getter added at the end of every setter, gotta remove it, since it won't compile
|
||||
//as setter must not return a value
|
||||
if (!func.actions.isEmpty()) {
|
||||
|
||||
@@ -52,6 +52,9 @@ public class ReturnActionItem extends ActionItem implements ExitItem {
|
||||
|
||||
@Override
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
if (value == null) {
|
||||
return writer.append("return");
|
||||
}
|
||||
writer.append("return ");
|
||||
return value.toString(writer, localData);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user