diff options
| author | 2019-02-23 19:42:00 +0200 | |
|---|---|---|
| committer | 2019-02-23 19:42:00 +0200 | |
| commit | bb20ce047a2e20866b9532c441c7433b1973ba5b (patch) | |
| tree | ed9f5bd596e43a1fffeef0b174c5370c039a9b62 /src/main/java/cuchaz/enigma/translation/representation | |
| parent | Tweak inheritance and implementation tree generation (diff) | |
| download | enigma-fork-bb20ce047a2e20866b9532c441c7433b1973ba5b.tar.gz enigma-fork-bb20ce047a2e20866b9532c441c7433b1973ba5b.tar.xz enigma-fork-bb20ce047a2e20866b9532c441c7433b1973ba5b.zip | |
Fix #110 and remap indices with matched bridge method names
Diffstat (limited to 'src/main/java/cuchaz/enigma/translation/representation')
10 files changed, 51 insertions, 1 deletions
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java index b9391b0..c4df891 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java | |||
| @@ -86,6 +86,11 @@ public class ClassDefEntry extends ClassEntry implements DefEntry<ClassEntry> { | |||
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | @Override | 88 | @Override |
| 89 | public ClassDefEntry withName(String name) { | ||
| 90 | return new ClassDefEntry(parent, name, signature, access, superClass, interfaces); | ||
| 91 | } | ||
| 92 | |||
| 93 | @Override | ||
| 89 | public ClassDefEntry withParent(ClassEntry parent) { | 94 | public ClassDefEntry withParent(ClassEntry parent) { |
| 90 | return new ClassDefEntry(parent, name, signature, access, superClass, interfaces); | 95 | return new ClassDefEntry(parent, name, signature, access, superClass, interfaces); |
| 91 | } | 96 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java index 644658f..9bfcd8a 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java | |||
| @@ -96,6 +96,11 @@ public class ClassEntry extends ParentedEntry<ClassEntry> implements Comparable< | |||
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | @Override | 98 | @Override |
| 99 | public ClassEntry withName(String name) { | ||
| 100 | return new ClassEntry(parent, name); | ||
| 101 | } | ||
| 102 | |||
| 103 | @Override | ||
| 99 | public ClassEntry withParent(ClassEntry parent) { | 104 | public ClassEntry withParent(ClassEntry parent) { |
| 100 | return new ClassEntry(parent, name); | 105 | return new ClassEntry(parent, name); |
| 101 | } | 106 | } |
| @@ -193,6 +198,11 @@ public class ClassEntry extends ParentedEntry<ClassEntry> implements Comparable< | |||
| 193 | 198 | ||
| 194 | @Override | 199 | @Override |
| 195 | public int compareTo(ClassEntry entry) { | 200 | public int compareTo(ClassEntry entry) { |
| 196 | return name.compareTo(entry.name); | 201 | String fullName = getFullName(); |
| 202 | String otherFullName = entry.getFullName(); | ||
| 203 | if (fullName.length() != otherFullName.length()) { | ||
| 204 | return fullName.length() - otherFullName.length(); | ||
| 205 | } | ||
| 206 | return fullName.compareTo(otherFullName); | ||
| 197 | } | 207 | } |
| 198 | } | 208 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java index 227400e..29a55d8 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java | |||
| @@ -31,6 +31,8 @@ public interface Entry<P extends Entry<?>> extends Translatable { | |||
| 31 | 31 | ||
| 32 | Class<P> getParentType(); | 32 | Class<P> getParentType(); |
| 33 | 33 | ||
| 34 | Entry<P> withName(String name); | ||
| 35 | |||
| 34 | Entry<P> withParent(P parent); | 36 | Entry<P> withParent(P parent); |
| 35 | 37 | ||
| 36 | boolean canConflictWith(Entry<?> entry); | 38 | boolean canConflictWith(Entry<?> entry); |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java index d487f71..2703301 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java | |||
| @@ -55,6 +55,11 @@ public class FieldDefEntry extends FieldEntry implements DefEntry<ClassEntry> { | |||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | @Override | 57 | @Override |
| 58 | public FieldDefEntry withName(String name) { | ||
| 59 | return new FieldDefEntry(parent, name, desc, signature, access); | ||
| 60 | } | ||
| 61 | |||
| 62 | @Override | ||
| 58 | public FieldDefEntry withParent(ClassEntry owner) { | 63 | public FieldDefEntry withParent(ClassEntry owner) { |
| 59 | return new FieldDefEntry(owner, this.name, this.desc, signature, access); | 64 | return new FieldDefEntry(owner, this.name, this.desc, signature, access); |
| 60 | } | 65 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java index 2ec2471..700512e 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java | |||
| @@ -45,6 +45,11 @@ public class FieldEntry extends ParentedEntry<ClassEntry> implements Comparable< | |||
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | @Override | 47 | @Override |
| 48 | public FieldEntry withName(String name) { | ||
| 49 | return new FieldEntry(parent, name, desc); | ||
| 50 | } | ||
| 51 | |||
| 52 | @Override | ||
| 48 | public FieldEntry withParent(ClassEntry parent) { | 53 | public FieldEntry withParent(ClassEntry parent) { |
| 49 | return new FieldEntry(parent, this.name, this.desc); | 54 | return new FieldEntry(parent, this.name, this.desc); |
| 50 | } | 55 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java index 86bdf61..c6f32b6 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java | |||
| @@ -34,6 +34,11 @@ public class LocalVariableDefEntry extends LocalVariableEntry { | |||
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | @Override | 36 | @Override |
| 37 | public LocalVariableDefEntry withName(String name) { | ||
| 38 | return new LocalVariableDefEntry(parent, index, name, parameter, desc); | ||
| 39 | } | ||
| 40 | |||
| 41 | @Override | ||
| 37 | public LocalVariableDefEntry withParent(MethodEntry entry) { | 42 | public LocalVariableDefEntry withParent(MethodEntry entry) { |
| 38 | return new LocalVariableDefEntry(entry, index, name, parameter, desc); | 43 | return new LocalVariableDefEntry(entry, index, name, parameter, desc); |
| 39 | } | 44 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java index 0c12f1c..6fdb79f 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java | |||
| @@ -52,6 +52,11 @@ public class LocalVariableEntry extends ParentedEntry<MethodEntry> implements Co | |||
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | @Override | 54 | @Override |
| 55 | public LocalVariableEntry withName(String name) { | ||
| 56 | return new LocalVariableEntry(parent, index, name, parameter); | ||
| 57 | } | ||
| 58 | |||
| 59 | @Override | ||
| 55 | public LocalVariableEntry withParent(MethodEntry parent) { | 60 | public LocalVariableEntry withParent(MethodEntry parent) { |
| 56 | return new LocalVariableEntry(parent, index, name, parameter); | 61 | return new LocalVariableEntry(parent, index, name, parameter); |
| 57 | } | 62 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java index 3ecd470..5184244 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java | |||
| @@ -55,6 +55,11 @@ public class MethodDefEntry extends MethodEntry implements DefEntry<ClassEntry> | |||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | @Override | 57 | @Override |
| 58 | public MethodDefEntry withName(String name) { | ||
| 59 | return new MethodDefEntry(parent, name, descriptor, signature, access); | ||
| 60 | } | ||
| 61 | |||
| 62 | @Override | ||
| 58 | public MethodDefEntry withParent(ClassEntry parent) { | 63 | public MethodDefEntry withParent(ClassEntry parent) { |
| 59 | return new MethodDefEntry(new ClassEntry(parent.getFullName()), name, descriptor, signature, access); | 64 | return new MethodDefEntry(new ClassEntry(parent.getFullName()), name, descriptor, signature, access); |
| 60 | } | 65 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java index 3a1dbb3..f5d5c74 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java | |||
| @@ -56,6 +56,11 @@ public class MethodEntry extends ParentedEntry<ClassEntry> implements Comparable | |||
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | @Override | 58 | @Override |
| 59 | public MethodEntry withName(String name) { | ||
| 60 | return new MethodEntry(parent, name, descriptor); | ||
| 61 | } | ||
| 62 | |||
| 63 | @Override | ||
| 59 | public MethodEntry withParent(ClassEntry parent) { | 64 | public MethodEntry withParent(ClassEntry parent) { |
| 60 | return new MethodEntry(new ClassEntry(parent.getFullName()), name, descriptor); | 65 | return new MethodEntry(new ClassEntry(parent.getFullName()), name, descriptor); |
| 61 | } | 66 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java index 7ba7c19..834da8d 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java | |||
| @@ -35,6 +35,9 @@ public abstract class ParentedEntry<P extends Entry<?>> implements Entry<P> { | |||
| 35 | @Override | 35 | @Override |
| 36 | public abstract ParentedEntry<P> withParent(P parent); | 36 | public abstract ParentedEntry<P> withParent(P parent); |
| 37 | 37 | ||
| 38 | @Override | ||
| 39 | public abstract ParentedEntry<P> withName(String name); | ||
| 40 | |||
| 38 | protected abstract ParentedEntry<P> translate(Translator translator, @Nullable EntryMapping mapping); | 41 | protected abstract ParentedEntry<P> translate(Translator translator, @Nullable EntryMapping mapping); |
| 39 | 42 | ||
| 40 | @Override | 43 | @Override |