Fixed #2135 FLA Export - framescripts handling when addFrameScript uses Multinames instead of QNames

This commit is contained in:
Jindra Petřík
2023-12-30 18:06:08 +01:00
parent d08082baf8
commit 80fb8b25d8
4 changed files with 16 additions and 14 deletions
@@ -64,7 +64,7 @@ public class TraitClass extends Trait implements TraitWithSlot {
private boolean classInitializerIsEmpty;
private List<Integer> frameTraitNames = new ArrayList<>();
private List<String> frameTraitNames = new ArrayList<>();
@Override
public void delete(ABC abc, boolean d) {
@@ -338,14 +338,14 @@ public class TraitClass extends Trait implements TraitWithSlot {
if (callProp.arguments.get(i) instanceof IntegerValueAVM2Item) {
if (callProp.arguments.get(i + 1) instanceof GetLexAVM2Item) {
GetLexAVM2Item lex = (GetLexAVM2Item) callProp.arguments.get(i + 1);
frameTraitNames.add(abc.constants.getMultinameId(lex.propertyName, false));
frameTraitNames.add(lex.propertyName.getName(abc.constants, new ArrayList<>(), false, true));
} else if (callProp.arguments.get(i + 1) instanceof GetPropertyAVM2Item) {
GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) callProp.arguments.get(i + 1);
if (getProp.object instanceof ThisAVM2Item) {
if (getProp.propertyName instanceof FullMultinameAVM2Item) {
FullMultinameAVM2Item framePropName = (FullMultinameAVM2Item) getProp.propertyName;
int multinameIndex = framePropName.multinameIndex;
frameTraitNames.add(multinameIndex);
frameTraitNames.add(abc.constants.getMultiname(multinameIndex).getName(abc.constants, new ArrayList<>(), false, true));
}
}
}
@@ -167,7 +167,7 @@ public class Traits implements Cloneable, Serializable {
}
}
public GraphTextWriter toString(AbcIndexing abcIndex, Class[] traitTypes, Trait parent, ConvertData convertData, String path, ABC abc, boolean isStatic, ScriptExportMode exportMode, boolean makePackages, int scriptIndex, int classIndex, GraphTextWriter writer, List<DottedChain> fullyQualifiedNames, boolean parallel, List<Integer> ignoredTraitNames, boolean insideInterface) throws InterruptedException {
public GraphTextWriter toString(AbcIndexing abcIndex, Class[] traitTypes, Trait parent, ConvertData convertData, String path, ABC abc, boolean isStatic, ScriptExportMode exportMode, boolean makePackages, int scriptIndex, int classIndex, GraphTextWriter writer, List<DottedChain> fullyQualifiedNames, boolean parallel, List<String> ignoredTraitNames, boolean insideInterface) throws InterruptedException {
List<Trait> ordered = new ArrayList<>(traits);
loopi:
@@ -227,7 +227,7 @@ public class Traits implements Cloneable, Serializable {
if (!trait.isVisible(isStatic, abc)) {
continue;
}
if (ignoredTraitNames.contains(trait.name_index)) {
if (ignoredTraitNames.contains(trait.getName(abc).getName(abc.constants, new ArrayList<>(), false, false))) {
continue;
}
writer.newLine();