diff --git a/CHANGELOG.md b/CHANGELOG.md index 414146639..9aa99d0da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - #1088 ECMA Number to string conversion - AS3 getslot/setslot in certain situations - #1185 AS3 Incorrect imports in obfuscated files +- #1186 Missing import when item is fully qualified ## [13.0.1] - 2021-02-09 ### Fixed diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java index 57478c668..ace55aa30 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java @@ -232,8 +232,6 @@ public abstract class Trait implements Cloneable, Serializable { } String name = ipath.getLast(); if (importnames.contains(name)) { - imports.remove(i); - i--; fullyQualifiedNames.add(DottedChain.parseWithSuffix(name)); } else { importnames.add(name); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java index a53c75a05..a61b4e63b 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java @@ -294,4 +294,31 @@ public class ActionScript3ClassTest extends ActionScript3DecompileTestBase { + " trace(globalVar2);\n" + "}"); } + + @Test + public void testImports() { + decompileScriptPack("standard", "tests_classes.TestImports", "package tests_classes\n" + + "{\n" + + " import tests_classes.myjson.JSON;\n" + + " import tests_classes.myjson2.JSON;\n" + + " \n" + + " public class TestImports\n" + + " {\n" + + " \n" + + " \n" + + " public function TestImports()\n" + + " {\n" + + " super();\n" + + " }\n" + + " \n" + + " public function run() : *\n" + + " {\n" + + " var j1:tests_classes.myjson.JSON = new tests_classes.myjson.JSON();\n" + + " var j2:tests_classes.myjson2.JSON = new tests_classes.myjson2.JSON();\n" + + " trace(j1);\n" + + " trace(j2);\n" + + " }\n" + + " }\n" + + "}"); + } } 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 f7cd67ba2..dde138f64 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 7a1fd3e0c..e6592f93c 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/obj/as3_newConfig.old b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old index 3182c7cb8..c4f2d0660 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old @@ -16,7 +16,7 @@ CONFIG::timeStamp - '09.02.2021' + '10.02.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml index 3182c7cb8..c4f2d0660 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml @@ -16,7 +16,7 @@ CONFIG::timeStamp - '09.02.2021' + '10.02.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 44567da15..f1e52ac78 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -7,6 +7,7 @@ package import tests_classes.mypackage2.SetupMyPackage2; import tests_classes.mypackage3.SetupMyPackage3; import tests_classes.TestThisOutsideClass; + import tests_classes.TestImports; /** * ... @@ -81,7 +82,6 @@ package TestSwitchComma; TestSwitchDefault; TestTernarOperator; - TestThisOutsideClass; TestTry; TestTryIf; TestTryReturn; @@ -100,6 +100,9 @@ package SetupMyPackage2; SetupMyPackage3; + TestThisOutsideClass; + TestImports; + public function Main() { if (stage) init(); diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestImports.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestImports.as new file mode 100644 index 000000000..0d046ba76 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestImports.as @@ -0,0 +1,16 @@ +package tests_classes +{ + import tests_classes.myjson.JSON; + import tests_classes.myjson2.JSON; + + public class TestImports + { + public function run():* + { + var j1:tests_classes.myjson.JSON = new tests_classes.myjson.JSON(); + var j2:tests_classes.myjson2.JSON = new tests_classes.myjson2.JSON(); + trace(j1); + trace(j2); + } + } +} diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson/JSON.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson/JSON.as new file mode 100644 index 000000000..4119712fe --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson/JSON.as @@ -0,0 +1,17 @@ +package tests_classes.myjson +{ + /** + * ... + * @author JPEXS + */ + public class JSON + { + + public function JSON() + { + + } + + } + +} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson2/JSON.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson2/JSON.as new file mode 100644 index 000000000..473096504 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/myjson2/JSON.as @@ -0,0 +1,17 @@ +package tests_classes.myjson2 +{ + /** + * ... + * @author JPEXS + */ + public class JSON + { + + public function JSON() + { + + } + + } + +} \ No newline at end of file