mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-20 20:25:47 +00:00
Correct trait packing.
Compound removing fix.
This commit is contained in:
@@ -1898,7 +1898,28 @@ public class ABC implements Openable {
|
||||
}
|
||||
}
|
||||
|
||||
private void packTraits(Traits traits) {
|
||||
for (int i = traits.traits.size() - 1; i >= 0; i--) {
|
||||
Trait t = traits.traits.get(i);
|
||||
if (t instanceof TraitClass) {
|
||||
TraitClass tc = (TraitClass)t;
|
||||
packTraits(instance_info.get(tc.class_info).instance_traits);
|
||||
packTraits(class_info.get(tc.class_info).static_traits);
|
||||
}
|
||||
if (t.deleted) {
|
||||
traits.traits.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void pack() {
|
||||
for (ScriptInfo script:script_info) {
|
||||
packTraits(script.traits);
|
||||
}
|
||||
for (MethodBody body: bodies) {
|
||||
packTraits(body.traits);
|
||||
}
|
||||
|
||||
packMethods();
|
||||
for (int c = 0; c < instance_info.size(); c++) {
|
||||
if (instance_info.get(c).deleted) {
|
||||
|
||||
@@ -98,8 +98,12 @@ public abstract class Trait implements Cloneable, Serializable {
|
||||
public static final int TRAIT_FUNCTION = 5;
|
||||
|
||||
public static final int TRAIT_CONST = 6;
|
||||
|
||||
public boolean deleted = false;
|
||||
|
||||
public abstract void delete(ABC abc, boolean d);
|
||||
public void delete(ABC abc, boolean d) {
|
||||
deleted = d;
|
||||
}
|
||||
|
||||
public final List<Entry<String, Map<String, String>>> getMetaDataTable(Trait parent, ConvertData convertData, ABC abc) {
|
||||
List<Entry<String, Map<String, String>>> ret = new ArrayList<>();
|
||||
|
||||
@@ -69,6 +69,7 @@ public class TraitClass extends Trait implements TraitWithSlot {
|
||||
|
||||
@Override
|
||||
public void delete(ABC abc, boolean d) {
|
||||
super.delete(abc, d);
|
||||
abc.deleteClass(class_info, d);
|
||||
abc.constants.getMultiname(name_index).deleted = d;
|
||||
}
|
||||
|
||||
@@ -46,6 +46,8 @@ public class TraitFunction extends Trait implements TraitWithSlot {
|
||||
|
||||
@Override
|
||||
public void delete(ABC abc, boolean d) {
|
||||
super.delete(abc, d);
|
||||
|
||||
abc.constants.getMultiname(name_index).deleted = d;
|
||||
abc.method_info.get(method_info).delete(abc, d);
|
||||
}
|
||||
|
||||
@@ -50,6 +50,8 @@ public class TraitMethodGetterSetter extends Trait {
|
||||
|
||||
@Override
|
||||
public void delete(ABC abc, boolean d) {
|
||||
super.delete(abc, d);
|
||||
|
||||
abc.constants.getMultiname(name_index).deleted = d;
|
||||
abc.method_info.get(method_info).delete(abc, d);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,8 @@ public class TraitSlotConst extends Trait implements TraitWithSlot {
|
||||
|
||||
@Override
|
||||
public void delete(ABC abc, boolean d) {
|
||||
super.delete(abc, d);
|
||||
|
||||
abc.constants.getMultiname(name_index).deleted = d;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user