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 246e5dff9..8560728ad 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 @@ -2917,7 +2917,7 @@ public class ActionScript3Parser { try { gen.generateScriptInfo(sinitVariables, sinitNeedsActivation, importedClasses, openedNamespaces, scriptIndex, si, allOpenedNamespaces, localData, items, classPos); } catch (Exception ex) { - ex.printStackTrace(); // FIXME + Logger.getLogger(ActionScript3Parser.class.getName()).log(Level.FINE, "Script generation exception", ex); abcIndex.getSelectedAbc().script_info.remove(si); throw ex; } 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 9ff364550..e6a4a7009 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 @@ -501,9 +501,11 @@ public abstract class Trait implements Cloneable, Serializable { for (String u : uses) { writer.appendNoHilight("use namespace " + u + ";").newLine(); } - writer.newLine(); } if (numberContextRef.getVal() != null) { + if (uses.isEmpty() && hasImport) { + writer.newLine(); + } writer.appendNoHilight("use "); NumberContext nc = new NumberContext(numberContextRef.getVal()); writer.appendNoHilight(NumberContext.usageToName(nc.getUsage())); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java index 63423d166..2a84dfbd3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/TraitClass.java @@ -230,15 +230,17 @@ public class TraitClass extends Trait implements TraitWithSlot { DottedChain packageName = instanceInfoMultiname.getNamespace(abc.constants).getName(abc.constants); //assume not null name fullyQualifiedNames = new ArrayList<>(); + + Reference first = new Reference<>(true); if (getName(abc).getNamespace(abc.constants).kind != Namespace.KIND_PACKAGE_INTERNAL) { - writeImports(this, -1, abcIndex, scriptIndex, classIndex, false, abc, writer, packageName, fullyQualifiedNames); + first.setVal(!writeImports(this, -1, abcIndex, scriptIndex, classIndex, false, abc, writer, packageName, fullyQualifiedNames)); } String instanceInfoName = instanceInfoMultiname.getName(abc.constants, fullyQualifiedNames, false, true); getMetaData(this, convertData, abc, writer); - + boolean allowEmbed = true; if (convertData.exportEmbedFlaMode) { @@ -275,9 +277,7 @@ public class TraitClass extends Trait implements TraitWithSlot { writer.endTrait(); writer.startBlock(); writer.startClass(class_info); - - Reference first = new Reference<>(true); - + //static variables & constants ClassInfo classInfo = abc.class_info.get(class_info); classInfo.static_traits.toString(first, abcIndex, new Class[]{TraitSlotConst.class}, this, convertData, path + "/" + instanceInfoName, abc, true, exportMode, false, scriptIndex, class_info, writer, fullyQualifiedNames, parallel, new ArrayList<>(), isInterface);