diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java index 62efc562a..751135abe 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java @@ -30,6 +30,7 @@ import com.jpexs.decompiler.graph.GraphTargetVisitorInterface; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; +import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.List; import java.util.Objects; import java.util.Set; @@ -101,6 +102,9 @@ public class CoerceAVM2Item extends AVM2Item { @Override public GraphTargetItem returnType() { + if (typeObj instanceof UnboundedTypeItem) { + return typeObj; + } return new TypeItem(typeObj.toString()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java index 5db3889c4..652ce7ad6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConvertAVM2Item.java @@ -59,15 +59,20 @@ public class ConvertAVM2Item extends AVM2Item { }*/ switch (type.toString()) { case "Boolean": - displayConvert = !valueReturnType.equals(TypeItem.BOOLEAN); + displayConvert = !valueReturnType.equals(TypeItem.BOOLEAN) && + !valueReturnType.equals(TypeItem.UNBOUNDED); break; case "Number": case "int": case "uint": - displayConvert = !valueReturnType.equals(TypeItem.INT) && !valueReturnType.equals(TypeItem.NUMBER) && !valueReturnType.equals(TypeItem.UINT); + displayConvert = !valueReturnType.equals(TypeItem.INT) && + !valueReturnType.equals(TypeItem.NUMBER) && + !valueReturnType.equals(TypeItem.UINT) && + !valueReturnType.equals(TypeItem.UNBOUNDED); break; case "String": - displayConvert = !valueReturnType.equals(TypeItem.STRING); + displayConvert = !valueReturnType.equals(TypeItem.STRING) && + !valueReturnType.equals(TypeItem.UNBOUNDED); break; } if (displayConvert) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java index dc506d6c7..94574f55b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/AddAVM2Item.java @@ -31,7 +31,7 @@ import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -118,7 +118,7 @@ public class AddAVM2Item extends BinaryOpItem implements CompoundableBinaryOp { } - return new UnboundedTypeItem(); + return TypeItem.NUMBER; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitAndAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitAndAVM2Item.java index 7a8523730..e766ef3b7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitAndAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitAndAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class BitAndAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitNotAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitNotAVM2Item.java index 687c5a9c9..b17e76d25 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitNotAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitNotAVM2Item.java @@ -25,7 +25,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.UnaryOpItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.List; /** @@ -53,6 +53,6 @@ public class BitNotAVM2Item extends UnaryOpItem { @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitOrAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitOrAVM2Item.java index b021a0f3a..032ebf094 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitOrAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitOrAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class BitOrAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitXorAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitXorAVM2Item.java index f82eef542..5ab190203 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitXorAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/BitXorAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class BitXorAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DivideAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DivideAVM2Item.java index c42a5ef1e..88b219a6e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DivideAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/DivideAVM2Item.java @@ -28,7 +28,7 @@ import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -85,7 +85,7 @@ public class DivideAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.NUMBER; - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/LShiftAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/LShiftAVM2Item.java index ac86ba878..ec268074b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/LShiftAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/LShiftAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class LShiftAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/ModuloAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/ModuloAVM2Item.java index 4f7291db5..b16be1a31 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/ModuloAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/ModuloAVM2Item.java @@ -28,7 +28,7 @@ import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -83,7 +83,7 @@ public class ModuloAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/MultiplyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/MultiplyAVM2Item.java index 63864d7b1..1f444ab2a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/MultiplyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/MultiplyAVM2Item.java @@ -28,7 +28,7 @@ import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -88,7 +88,7 @@ public class MultiplyAVM2Item extends BinaryOpItem implements CompoundableBinary return TypeItem.NUMBER; } - return new UnboundedTypeItem(); + return TypeItem.NUMBER; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/NegAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/NegAVM2Item.java index 94635398f..cdf49d90b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/NegAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/NegAVM2Item.java @@ -23,8 +23,9 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.UnaryOpItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.List; /** @@ -51,6 +52,6 @@ public class NegAVM2Item extends UnaryOpItem { @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/RShiftAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/RShiftAVM2Item.java index dbc6e0cd9..6379333b4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/RShiftAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/RShiftAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class RShiftAVM2Item extends BinaryOpItem implements CompoundableBinaryOp @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java index b394f489a..ee9dd9da8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/SubtractAVM2Item.java @@ -29,7 +29,7 @@ import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -105,7 +105,7 @@ public class SubtractAVM2Item extends BinaryOpItem implements CompoundableBinary return TypeItem.NUMBER; } - return new UnboundedTypeItem(); + return TypeItem.NUMBER; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/TypeOfAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/TypeOfAVM2Item.java index 335bc6c3b..f77a73bd2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/TypeOfAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/TypeOfAVM2Item.java @@ -27,7 +27,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.UnaryOpItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.List; import java.util.Set; @@ -83,6 +83,6 @@ public class TypeOfAVM2Item extends UnaryOpItem { @Override public GraphTargetItem returnType() { return TypeItem.STRING; - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/URShiftAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/URShiftAVM2Item.java index 56f4190e8..c48b215b7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/URShiftAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/operations/URShiftAVM2Item.java @@ -26,7 +26,7 @@ import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class URShiftAVM2Item extends BinaryOpItem implements CompoundableBinaryO @Override public GraphTargetItem returnType() { return TypeItem.INT; //? - //return new UnboundedTypeItem(); + //return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index fd18f2419..2dd1b8fa7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -101,7 +101,7 @@ import com.jpexs.decompiler.graph.model.PushItem; import com.jpexs.decompiler.graph.model.SwitchItem; import com.jpexs.decompiler.graph.model.TernarOpItem; import com.jpexs.decompiler.graph.model.TrueItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import com.jpexs.decompiler.graph.model.WhileItem; import com.jpexs.helpers.Reference; import java.io.ByteArrayOutputStream; @@ -1523,7 +1523,7 @@ public class AVM2SourceGenerator implements SourceGenerator { } public int typeName(SourceGeneratorLocalData localData, GraphTargetItem type) throws CompilationException { - if (type instanceof UnboundedTypeItem) { + if (type.equals(TypeItem.UNBOUNDED)) { return 0; } if (("" + type).equals("*")) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index af60a48a7..b0c7d7c70 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -113,7 +113,7 @@ import com.jpexs.decompiler.graph.model.PushItem; import com.jpexs.decompiler.graph.model.SwitchItem; import com.jpexs.decompiler.graph.model.TernarOpItem; import com.jpexs.decompiler.graph.model.TrueItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import com.jpexs.decompiler.graph.model.WhileItem; import com.jpexs.helpers.Helper; import com.jpexs.helpers.Reference; @@ -174,7 +174,7 @@ public class ActionScript3Parser { private GraphTargetItem type(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, List variables) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s = lex(); if (s.type == SymbolType.MULTIPLY) { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } else if (s.type == SymbolType.VOID) { return new TypeItem(DottedChain.VOID); } else { @@ -531,7 +531,7 @@ public class ActionScript3Parser { paramTypes.add(currentType = type(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, variables)); s = lex(); } else { - paramTypes.add(currentType = new UnboundedTypeItem()); + paramTypes.add(currentType = TypeItem.UNBOUNDED); } if (s.type == SymbolType.ASSIGN) { GraphTargetItem currentValue = expression(allOpenedNamespaces, thisType, pkg, new Reference<>(false), importedClasses, openedNamespaces, null, isMethod, isMethod, isMethod, variables, false); @@ -554,7 +554,7 @@ public class ActionScript3Parser { if (s.type == SymbolType.COLON) { retType = type(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, variables); } else { - retType = new UnboundedTypeItem(); + retType = TypeItem.UNBOUNDED; lexer.pushback(s); } List body = null; @@ -1492,7 +1492,7 @@ public class ActionScript3Parser { type = type(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, variables); s = lex(); } else { - type = new UnboundedTypeItem(); + type = TypeItem.UNBOUNDED; } if (s.type == SymbolType.ASSIGN) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ClassAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ClassAVM2Item.java index 07c91383c..fb1f9923b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ClassAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ClassAVM2Item.java @@ -22,9 +22,10 @@ import com.jpexs.decompiler.graph.Block; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.GraphTargetVisitorInterface; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.ContinueItem; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -125,6 +126,6 @@ public class ClassAVM2Item extends AVM2Item implements Block { @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); //FIXME + return TypeItem.UNBOUNDED; //FIXME } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/InterfaceAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/InterfaceAVM2Item.java index 9618936d4..669b7ae67 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/InterfaceAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/InterfaceAVM2Item.java @@ -20,8 +20,9 @@ import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.List; import java.util.Map; @@ -76,6 +77,6 @@ public class InterfaceAVM2Item extends AVM2Item { @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); //FIXME + return TypeItem.UNBOUNDED; //FIXME } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java index 71cfa402e..aafadbd8f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NameAVM2Item.java @@ -36,7 +36,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import com.jpexs.helpers.Reference; import java.util.ArrayList; import java.util.Arrays; @@ -199,30 +199,26 @@ public class NameAVM2Item extends AssignableAVM2Item { ttype = ((UnresolvedAVM2Item) ttype).resolved; } AVM2Instruction ins; - if (ttype instanceof UnboundedTypeItem) { - ins = ins(AVM2Instructions.CoerceA); - } else { - switch (ttype.toString()) { - case "int": - ins = ins(AVM2Instructions.ConvertI); - break; - case "*": - ins = ins(AVM2Instructions.CoerceA); - break; - case "String": - ins = ins(AVM2Instructions.CoerceS); - break; - case "Boolean": - ins = ins(AVM2Instructions.ConvertB); - break; - case "uint": - ins = ins(AVM2Instructions.ConvertU); - break; - default: - int type_index = AVM2SourceGenerator.resolveType(localData, ttype, ((AVM2SourceGenerator) generator).abcIndex); - ins = ins(AVM2Instructions.Coerce, type_index); - break; - } + switch (ttype.toString()) { + case "int": + ins = ins(AVM2Instructions.ConvertI); + break; + case "*": + ins = ins(AVM2Instructions.CoerceA); + break; + case "String": + ins = ins(AVM2Instructions.CoerceS); + break; + case "Boolean": + ins = ins(AVM2Instructions.ConvertB); + break; + case "uint": + ins = ins(AVM2Instructions.ConvertU); + break; + default: + int type_index = AVM2SourceGenerator.resolveType(localData, ttype, ((AVM2SourceGenerator) generator).abcIndex); + ins = ins(AVM2Instructions.Coerce, type_index); + break; } return ins; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PackageAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PackageAVM2Item.java index 741b3c2ac..450a8a29a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PackageAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PackageAVM2Item.java @@ -20,8 +20,9 @@ import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.DottedChain; import com.jpexs.decompiler.graph.GraphTargetItem; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; + import java.util.ArrayList; import java.util.List; @@ -51,7 +52,7 @@ public class PackageAVM2Item extends AVM2Item { @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); //FIXME + return TypeItem.UNBOUNDED; //FIXME } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ActionItem.java index 0e11dfa3f..96a070606 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ActionItem.java @@ -25,8 +25,8 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -97,6 +97,6 @@ public abstract class ActionItem extends GraphTargetItem implements Serializable @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/AndActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/AndActionItem.java index 29721c15c..4cb11db58 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/AndActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/AndActionItem.java @@ -23,8 +23,8 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.ArrayList; import java.util.List; @@ -54,7 +54,7 @@ public class AndActionItem extends BinaryOpItem { @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitAndActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitAndActionItem.java index 450203bfc..0264c09cc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitAndActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitAndActionItem.java @@ -23,9 +23,9 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class BitAndActionItem extends BinaryOpItem implements CompoundableBinary @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitOrActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitOrActionItem.java index 84a240154..d29ee6808 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitOrActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitOrActionItem.java @@ -23,9 +23,9 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class BitOrActionItem extends BinaryOpItem implements CompoundableBinaryO @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitXorActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitXorActionItem.java index d5b7d36d8..cff34171a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitXorActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitXorActionItem.java @@ -25,10 +25,10 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; import com.jpexs.decompiler.graph.model.LocalData; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.ArrayList; import java.util.List; @@ -75,7 +75,7 @@ public class BitXorActionItem extends BinaryOpItem implements CompoundableBinary @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/DivideActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/DivideActionItem.java index 356c67550..c59b057e2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/DivideActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/DivideActionItem.java @@ -22,9 +22,9 @@ import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; +import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; import com.jpexs.decompiler.graph.model.CompoundableBinaryOp; -import com.jpexs.decompiler.graph.model.UnboundedTypeItem; import java.util.ArrayList; import java.util.List; @@ -59,7 +59,7 @@ public class DivideActionItem extends BinaryOpItem implements CompoundableBinary @Override public GraphTargetItem returnType() { - return new UnboundedTypeItem(); + return TypeItem.UNBOUNDED; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java index fadcaed60..9f53be65d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java @@ -31,6 +31,8 @@ import java.util.List; public class DottedChain implements Serializable, Comparable { public static final DottedChain EMPTY = new DottedChain(true); + + public static final DottedChain UNBOUNDED = new DottedChain(new String[]{"*"}); public static final DottedChain TOPLEVEL = new DottedChain(new String[]{}); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java index 2cf4a4116..133ac8fbc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java @@ -332,13 +332,13 @@ public abstract class GraphTargetItem implements Serializable, Cloneable { public GraphTextWriter appendTry(GraphTextWriter writer, LocalData localData, String implicitCoerce) throws InterruptedException { GraphTargetItem t = this; - if (!implicitCoerce.isEmpty()) { //if implicit coerce equals explicit + /*if (!implicitCoerce.isEmpty()) { //if implicit coerce equals explicit if (t instanceof ConvertAVM2Item) { if (implicitCoerce.equals((((ConvertAVM2Item) t).type.toString()))) { t = t.value; } } - } + }*/ if (!implicitCoerce.isEmpty() && Configuration.simplifyExpressions.get()) { t = t.simplify(implicitCoerce); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeFunctionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeFunctionItem.java index 7f6c625b7..7a17285f0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeFunctionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeFunctionItem.java @@ -33,7 +33,7 @@ public class TypeFunctionItem extends GraphTargetItem { public static TypeFunctionItem ARRAY = new TypeFunctionItem("Array"); - public static UnboundedTypeItem UNBOUNDED = new UnboundedTypeItem(); + public static UnboundedTypeItem UNBOUNDED = TypeItem.UNBOUNDED; public String fullTypeName; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeItem.java index 8663c2787..f8d923edb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/TypeItem.java @@ -47,8 +47,12 @@ public class TypeItem extends GraphTargetItem { public static TypeItem ARRAY = new TypeItem(DottedChain.ARRAY); public static UnboundedTypeItem UNBOUNDED = new UnboundedTypeItem(); + + public static TypeItem UNKNOWN = new TypeItem("--UNKNOWN--"); public final DottedChain fullTypeName; + + public boolean printRaw = false; public TypeItem(String s) { this(s == null ? new DottedChain(new String[]{}, new String[]{""}) : DottedChain.parseWithSuffix(s)); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/TernarOpItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/TernarOpItem.java index 06f1c9e4b..3057de619 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/TernarOpItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/TernarOpItem.java @@ -102,7 +102,7 @@ public class TernarOpItem extends GraphTargetItem { && (onFalse.returnType().equals(TypeItem.NUMBER) || onFalse.returnType().equals(TypeItem.INT) || onFalse.returnType().equals(TypeItem.UINT))) { return TypeItem.NUMBER; } - return TypeItem.UNBOUNDED; + return TypeItem.UNKNOWN; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/UnboundedTypeItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/UnboundedTypeItem.java index 657c52fac..4bc2b08a5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/UnboundedTypeItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/UnboundedTypeItem.java @@ -50,4 +50,4 @@ public class UnboundedTypeItem extends AVM2Item { public boolean hasReturnValue() { return true; } -} +} \ No newline at end of file diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java index 172ea0c2b..c9f795375 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java @@ -172,7 +172,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT @Test public void testSwitch() { - decompileMethod("assembled", "testSwitch", "switch(int(somevar))\r\n" + decompileMethod("assembled", "testSwitch", "switch(somevar)\r\n" + "{\r\n" + "case 0:\r\n" + "var _loc2_:String = \"X\";\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index e017ad1be..7ed508edd 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -45,7 +45,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testCallLocal() { decompileMethod("classic_air", "testCallLocal", "var f:Function = getF();\r\n" - + "var b:int = int(f(1,3));\r\n", + + "var b:int = f(1,3);\r\n", false); } @@ -222,15 +222,19 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testConvert() { - decompileMethod("classic_air", "testConvert", "var s:String = \"a\";\r\n" + decompileMethod("classic_air", "testConvert", "var a:* = undefined;\r\n" + + "var s:String = \"a\";\r\n" + "var i:int = int(s);\r\n" - + "var j:int = n;\r\n" - + "s = String(j);\r\n" + + "var j:int;\r\n" + + "s = String(j = n);\r\n" + "s = ns;\r\n" + "s = String(i == 4 ? \"\" : i);\r\n" + "s = i == 4 ? \"\" : String(i);\r\n" + "s = TestConvert.TEST;\r\n" - + "i = this.TEST;\r\n", + + "i = this.TEST;\r\n" + + "i = 4 * 5;\r\n" + + "i = a * 6;\r\n" + + "i = a;\r\n", false); } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 2f143d7df..79183c850 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -45,7 +45,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testCallLocal() { decompileMethod("classic", "testCallLocal", "var f:Function = this.getF();\r\n" - + "var b:int = int(f(1,3));\r\n", + + "var b:int = f(1,3);\r\n", false); } @@ -221,7 +221,8 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testConvert() { - decompileMethod("classic", "testConvert", "var s:String = \"a\";\r\n" + decompileMethod("classic", "testConvert", "var a:* = undefined;\r\n" + + "var s:String = \"a\";\r\n" + "var i:int = int(s);\r\n" + "var j:int = this.n;\r\n" + "s = String(j);\r\n" @@ -229,7 +230,10 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "s = String(i == 4 ? \"\" : i);\r\n" + "s = i == 4 ? \"\" : String(i);\r\n" + "s = TestConvert.TEST;\r\n" - + "i = this.TEST;\r\n", + + "i = this.TEST;\r\n" + + "i = Number(\"4\") * 5;\r\n" + + "i = a * 6;\r\n" + + "i = a;\r\n", false); } diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index a7f3f7775..e51de1116 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 3cf122ea3..cfdb7414b 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestConvert.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestConvert.as index 315d32a21..acfc95774 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestConvert.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestConvert.as @@ -12,9 +12,10 @@ package tests public function run():void { - var s:String = "a"; + var s:String = "a"; var i:int = int(s); var j:int = n; + var a:*; s = String(j); s = ns; @@ -23,6 +24,10 @@ package tests s = TestConvert.TEST; i = this.TEST; + + i = Number("4") * 5; + i = a * 6; + i = a; } } }