Fixed #1888 AS3 - Coerce to int when Number

Fixed AS3 - super properties resolving
This commit is contained in:
Jindra Petřík
2023-01-13 21:09:05 +01:00
parent 6b07e1c868
commit 50910f57d1
22 changed files with 172 additions and 59 deletions

View File

@@ -255,6 +255,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.GetLexAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.GetPropertyAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.GetSlotAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.InitPropertyAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.NewActivationAVM2Item;
@@ -1780,6 +1781,8 @@ public class AVM2Code implements Cloneable {
vtype = ((CoerceAVM2Item) assignment.value).typeObj;
} else if (assignment instanceof LocalRegAVM2Item) { //for..in
vtype = ((LocalRegAVM2Item)assignment).type;
} else if (assignment instanceof GetSlotAVM2Item) { //for..in
vtype = ((GetSlotAVM2Item)assignment).slotType;
} else if ((assignment.value instanceof SimpleValue) && ((SimpleValue) assignment.value).isSimpleValue()) {
vtype = assignment.value.returnType();
}
@@ -2196,19 +2199,19 @@ public class AVM2Code implements Cloneable {
type = new TypeItem(abc.constants.getMultiname(param_types[i]).getNameWithNamespace(abc.constants, true));
}
if (d.length > r) {
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null)), type);
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null), type), type);
}
r++;
}
if (abc.method_info.get(body.method_info).flagNeed_arguments()) {
if (d.length > r) {
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null)), TypeItem.ARRAY /*?*/);
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null), TypeItem.ARRAY), TypeItem.ARRAY /*?*/);
}
r++;
}
if (abc.method_info.get(body.method_info).flagNeed_rest()) {
if (d.length > r) {
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null)), TypeItem.ARRAY/*?*/);
d[r] = new DeclarationAVM2Item(new SetLocalAVM2Item(null, null, r, new NullAVM2Item(null, null), TypeItem.ARRAY), TypeItem.ARRAY/*?*/);
}
r++;
}

View File

@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.AVM2LocalData;
import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.IntegerValueAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.TranslateStack;
@@ -33,7 +34,18 @@ import java.util.List;
*/
public interface SetTypeIns {
public static void handleResult(GraphTargetItem value, TranslateStack stack, List<GraphTargetItem> output, AVM2LocalData localData, GraphTargetItem result, int regId) {
public static GraphTargetItem handleNumberToInt(GraphTargetItem value, GraphTargetItem type) {
if ((value instanceof ConvertAVM2Item) || (value instanceof CoerceAVM2Item)) {
if (type != null && (type.equals(TypeItem.INT) || type.equals(TypeItem.UINT))) {
if (value.value.returnType().equals(TypeItem.NUMBER)) {
return value.value;
}
}
}
return value;
}
public static void handleResult(GraphTargetItem value, TranslateStack stack, List<GraphTargetItem> output, AVM2LocalData localData, GraphTargetItem result, int regId, GraphTargetItem type) {
GraphTargetItem notCoercedValue = value;
if ((value instanceof CoerceAVM2Item) || (value instanceof ConvertAVM2Item)) {
notCoercedValue = value.value;
@@ -84,7 +96,7 @@ public interface SetTypeIns {
}
}
}
}
}
output.add(result);
}
}

View File

@@ -124,7 +124,7 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S
}
}
SetLocalAVM2Item result = new SetLocalAVM2Item(ins, localData.lineStartInstruction, regId, value);
SetLocalAVM2Item result = new SetLocalAVM2Item(ins, localData.lineStartInstruction, regId, value, value.returnType());
if (value.getNotCoerced() instanceof CompoundableBinaryOp) {
CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoerced();
if (binaryOp.getLeftSide() instanceof LocalRegAVM2Item) {
@@ -136,7 +136,7 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S
}
}
SetTypeIns.handleResult(value, stack, output, localData, result, regId);
SetTypeIns.handleResult(value, stack, output, localData, result, regId, value.returnType());
}
@Override

View File

@@ -21,18 +21,20 @@ import com.jpexs.decompiler.flash.abc.AVM2LocalData;
import com.jpexs.decompiler.flash.abc.avm2.AVM2Code;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.instructions.InstructionDefinition;
import static com.jpexs.decompiler.flash.abc.avm2.instructions.other.GetPropertyIns.resolvePropertyType;
import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.GetSuperAVM2Item;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.Reference;
import java.util.List;
/**
*
* @author JPEXS
*/
public class GetSuperIns extends InstructionDefinition {
public class GetSuperIns extends InstructionDefinition {
public GetSuperIns() {
super(0x04, "getsuper", new int[]{AVM2Code.DAT_MULTINAME_INDEX}, true);
}
@@ -42,7 +44,13 @@ public class GetSuperIns extends InstructionDefinition {
int multinameIndex = ins.operands[0];
FullMultinameAVM2Item multiname = resolveMultiname(localData, true, stack, localData.getConstants(), multinameIndex, ins);
GraphTargetItem obj = stack.pop();
stack.push(new GetSuperAVM2Item(ins, localData.lineStartInstruction, obj, multiname));
Reference<Boolean> isStatic = new Reference<>(false);
Reference<GraphTargetItem> type = new Reference<>(null);
Reference<GraphTargetItem> callType = new Reference<>(null);
resolvePropertyType(localData, obj, multiname, isStatic, type, callType);
stack.push(new GetSuperAVM2Item(ins, localData.lineStartInstruction, obj, multiname, type.getVal(), callType.getVal(),isStatic.getVal()));
}
@Override

View File

@@ -364,7 +364,7 @@ public class SetPropertyIns extends InstructionDefinition implements SetTypeIns
SetPropertyAVM2Item result = new SetPropertyAVM2Item(ins, localData.lineStartInstruction, obj, multiname, value, type.getVal(), callType.getVal(), isStatic.getVal());
handleCompound(localData, obj, multiname, value, output, result);
SetTypeIns.handleResult(value, stack, output, localData, result, -1);
SetTypeIns.handleResult(value, stack, output, localData, result, -1, type.getVal());
}
public static void handleCompound(AVM2LocalData localData, GraphTargetItem obj, FullMultinameAVM2Item multiname, GraphTargetItem value, List<GraphTargetItem> output, SetTypeAVM2Item result) {

View File

@@ -168,7 +168,7 @@ public class SetSlotIns extends InstructionDefinition implements SetTypeIns {
}
}
SetTypeIns.handleResult(value, stack, output, localData, result, -1);
SetTypeIns.handleResult(value, stack, output, localData, result, -1, slotType);
}
@Override

View File

@@ -28,6 +28,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.SetSuperAVM2Item;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
import com.jpexs.helpers.Reference;
import java.util.List;
import java.util.Objects;
@@ -49,7 +50,13 @@ public class SetSuperIns extends InstructionDefinition implements SetTypeIns {
FullMultinameAVM2Item multiname = resolveMultiname(localData, true, stack, localData.getConstants(), multinameIndex, ins);
GraphTargetItem obj = stack.pop();
SetSuperAVM2Item result = new SetSuperAVM2Item(ins, localData.lineStartInstruction, value, obj, multiname);
Reference<Boolean> isStatic = new Reference<>(false);
Reference<GraphTargetItem> type = new Reference<>(null);
Reference<GraphTargetItem> callType = new Reference<>(null);
GetPropertyIns.resolvePropertyType(localData, obj /*??*/, multiname, isStatic, type, callType);
SetSuperAVM2Item result = new SetSuperAVM2Item(ins, localData.lineStartInstruction, value, obj, multiname, type.getVal(), callType.getVal(), isStatic.getVal());
if (value.getNotCoercedNoDup() instanceof CompoundableBinaryOp) {
if (!obj.hasSideEffect() && !multiname.hasSideEffect()) {
@@ -64,7 +71,7 @@ public class SetSuperIns extends InstructionDefinition implements SetTypeIns {
}
}
SetTypeIns.handleResult(value, stack, output, localData, result, -1);
SetTypeIns.handleResult(value, stack, output, localData, result, -1, type.getVal());
}
@Override

View File

@@ -66,23 +66,33 @@ public class CoerceAVM2Item extends AVM2Item {
displayCoerce = false;
break;
case "Boolean":
displayCoerce = !valueReturnType.equals(TypeItem.BOOLEAN) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
displayCoerce = !valueReturnType.equals(TypeItem.BOOLEAN)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "Number":
displayCoerce = !valueReturnType.equals(TypeItem.INT)
&& !valueReturnType.equals(TypeItem.NUMBER)
&& !valueReturnType.equals(TypeItem.UINT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "int":
displayCoerce = !valueReturnType.equals(TypeItem.INT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "uint":
displayCoerce = !valueReturnType.equals(TypeItem.INT) &&
!valueReturnType.equals(TypeItem.NUMBER) &&
!valueReturnType.equals(TypeItem.UINT) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
if (valueReturnType.equals(TypeItem.INT) && (value instanceof IntegerValueAVM2Item)) {
displayCoerce = (((IntegerValueAVM2Item) value).value < 0);
} else {
displayCoerce = !valueReturnType.equals(TypeItem.UINT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
}
break;
case "String":
displayCoerce = !valueReturnType.equals(TypeItem.STRING) &&
!valueReturnType.equals(new TypeItem("XML")) &&
!valueReturnType.equals(new TypeItem("XMLList")) &&
!valueReturnType.equals(new TypeItem("null")) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
displayCoerce = !valueReturnType.equals(TypeItem.STRING)
&& !valueReturnType.equals(new TypeItem("XML"))
&& !valueReturnType.equals(new TypeItem("XMLList"))
&& !valueReturnType.equals(new TypeItem("null"))
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
default:
displayCoerce = false;
@@ -149,7 +159,7 @@ public class CoerceAVM2Item extends AVM2Item {
}
if (typeObj instanceof TypeItem) {
return typeObj;
}
}
return new TypeItem(typeObj.toString());
}

View File

@@ -54,24 +54,34 @@ public class ConvertAVM2Item extends AVM2Item {
GraphTargetItem valueReturnType = value.returnType();
switch (type.toString()) {
case "Boolean":
displayConvert = !valueReturnType.equals(TypeItem.BOOLEAN) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
displayConvert = !valueReturnType.equals(TypeItem.BOOLEAN)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "Number":
displayConvert = !valueReturnType.equals(TypeItem.INT)
&& !valueReturnType.equals(TypeItem.NUMBER)
&& !valueReturnType.equals(TypeItem.UINT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "int":
displayConvert = !valueReturnType.equals(TypeItem.INT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
case "uint":
displayConvert = !valueReturnType.equals(TypeItem.INT) &&
!valueReturnType.equals(TypeItem.NUMBER) &&
!valueReturnType.equals(TypeItem.UINT) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
if (valueReturnType.equals(TypeItem.INT) && (value instanceof IntegerValueAVM2Item)) {
displayConvert = (((IntegerValueAVM2Item) value).value < 0);
} else {
displayConvert = !valueReturnType.equals(TypeItem.UINT)
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
}
break;
case "String":
displayConvert = !valueReturnType.equals(TypeItem.STRING) &&
!valueReturnType.equals(new TypeItem("XML")) &&
!valueReturnType.equals(new TypeItem("XMLList")) &&
!valueReturnType.equals(new TypeItem("null")) &&
!valueReturnType.equals(TypeItem.UNBOUNDED);
break;
displayConvert = !valueReturnType.equals(TypeItem.STRING)
&& !valueReturnType.equals(new TypeItem("XML"))
&& !valueReturnType.equals(new TypeItem("XMLList"))
&& !valueReturnType.equals(new TypeItem("null"))
&& !valueReturnType.equals(TypeItem.UNBOUNDED);
break;
}
if (displayConvert) {
type.toString(writer, localData).append("(");

View File

@@ -20,7 +20,6 @@ import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
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.Objects;
@@ -34,10 +33,19 @@ public class GetSuperAVM2Item extends AVM2Item {
public FullMultinameAVM2Item propertyName;
public GetSuperAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem object, FullMultinameAVM2Item propertyName) {
public GraphTargetItem type;
public GraphTargetItem callType;
public boolean isStatic;
public GetSuperAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem object, FullMultinameAVM2Item propertyName, GraphTargetItem type, GraphTargetItem callType, boolean isStatic) {
super(instruction, lineStartIns, PRECEDENCE_PRIMARY);
this.object = object;
this.propertyName = propertyName;
this.type = type;
this.callType = callType;
this.isStatic = isStatic;
}
@Override
@@ -60,7 +68,7 @@ public class GetSuperAVM2Item extends AVM2Item {
@Override
public GraphTargetItem returnType() {
return TypeItem.UNBOUNDED;
return type;
}
@Override

View File

@@ -146,7 +146,7 @@ public class IntegerValueAVM2Item extends NumberValueAVM2Item implements Integer
}
@Override
public GraphTargetItem returnType() {
public GraphTargetItem returnType() {
return TypeItem.INT;
}

View File

@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.SourceGeneratorLocalData;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instructions;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
@@ -43,6 +44,8 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
public GraphTargetItem compoundValue;
public String compoundOperator;
public GraphTargetItem type;
@Override
public DeclarationAVM2Item getDeclaration() {
@@ -54,9 +57,10 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
this.declaration = declaration;
}
public SetLocalAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, int regIndex, GraphTargetItem value) {
public SetLocalAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, int regIndex, GraphTargetItem value, GraphTargetItem type) {
super(instruction, lineStartIns, PRECEDENCE_ASSIGMENT, value);
this.regIndex = regIndex;
this.type = type;
}
@Override
@@ -73,8 +77,8 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
writer.append(" = ");
/*if (declaration != null && !declaration.type.equals(TypeItem.UNBOUNDED) && (value instanceof ConvertAVM2Item)) {
return value.value.toString(writer, localData);
}*/
return value.toString(writer, localData);
}*/
return SetTypeIns.handleNumberToInt(value, type).toString(writer, localData);
}
@Override
@@ -141,7 +145,7 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
@Override
public GraphTargetItem returnType() {
return value.returnType();
return type;
}
@Override

View File

@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.SourceGeneratorLocalData;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instructions;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.parser.script.AVM2SourceGenerator;
@@ -103,7 +104,7 @@ public class SetPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, As
/*if (declaration != null && !declaration.type.equals(TypeItem.UNBOUNDED) && (value instanceof ConvertAVM2Item)) {
return value.value.toString(writer, localData);
}*/
return value.toString(writer, localData);
return SetTypeIns.handleNumberToInt(value, type).toString(writer, localData);
}
@Override

View File

@@ -16,6 +16,7 @@
*/
package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item;
import com.jpexs.decompiler.flash.abc.types.Multiname;
@@ -102,7 +103,7 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign
/*if (declaration != null && !declaration.type.equals(TypeItem.UNBOUNDED) && (value instanceof ConvertAVM2Item)) {
return value.value.toString(writer, localData);
}*/
return value.toString(writer, localData);
return SetTypeIns.handleNumberToInt(value, type).toString(writer, localData);
}
public String getNameAsStr(LocalData localData) throws InterruptedException {

View File

@@ -16,6 +16,7 @@
*/
package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.DeclarationAVM2Item;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
import com.jpexs.decompiler.graph.GraphPart;
@@ -40,6 +41,12 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item {
public GraphTargetItem compoundValue;
public String compoundOperator;
public GraphTargetItem type;
public GraphTargetItem callType;
public boolean isStatic;
@Override
public DeclarationAVM2Item getDeclaration() {
@@ -65,10 +72,13 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item {
return value.getFirstPart();
}
public SetSuperAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem value, GraphTargetItem object, FullMultinameAVM2Item propertyName) {
public SetSuperAVM2Item(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem value, GraphTargetItem object, FullMultinameAVM2Item propertyName, GraphTargetItem type, GraphTargetItem callType, boolean isStatic) {
super(instruction, lineStartIns, PRECEDENCE_ASSIGMENT, value);
this.object = object;
this.propertyName = propertyName;
this.type = type;
this.callType = callType;
this.isStatic = isStatic;
}
@Override
@@ -88,7 +98,7 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item {
return compoundValue.toString(writer, localData);
}
writer.append(" = ");
return value.toString(writer, localData);
return SetTypeIns.handleNumberToInt(value, type).toString(writer, localData);
}
@Override
@@ -109,7 +119,7 @@ public class SetSuperAVM2Item extends AVM2Item implements SetTypeAVM2Item {
@Override
public GraphTargetItem getObject() {
return new GetSuperAVM2Item(getInstruction(), getLineStartIns(), object, propertyName);
return new GetSuperAVM2Item(getInstruction(), getLineStartIns(), object, propertyName, type, callType, isStatic);
}
@Override

View File

@@ -17,6 +17,7 @@
package com.jpexs.decompiler.flash.abc.avm2.model.clauses;
import com.jpexs.decompiler.flash.IdentifiersDeobfuscation;
import com.jpexs.decompiler.flash.abc.avm2.instructions.SetTypeIns;
import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item;
@@ -60,8 +61,8 @@ public class DeclarationAVM2Item extends AVM2Item {
public DeclarationAVM2Item(GraphTargetItem assignment) {
this(assignment, null);
}
}
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
@@ -105,7 +106,7 @@ public class DeclarationAVM2Item extends AVM2Item {
type.appendTry(writer, localData);
if (showValue) {
writer.append(" = ");
val.toString(writer, localData);
SetTypeIns.handleNumberToInt(val, type).toString(writer, localData);
}
return writer;
}
@@ -124,7 +125,7 @@ public class DeclarationAVM2Item extends AVM2Item {
type.appendTry(writer, localData);
if (showValue) {
writer.append(" = ");
val.toString(writer, localData);
SetTypeIns.handleNumberToInt(val, type).toString(writer, localData);
}
return writer;
}
@@ -144,7 +145,7 @@ public class DeclarationAVM2Item extends AVM2Item {
type.appendTry(writer, localData);
if (showValue) {
writer.append(" = ");
val.toString(writer, localData);
SetTypeIns.handleNumberToInt(val, type).toString(writer, localData);
}
return writer;
}