From e8b2d6d19a8e7ee3ab657d5c37776ba03d43ecb7 Mon Sep 17 00:00:00 2001 From: asie Date: Sat, 8 Dec 2018 12:05:28 +0100 Subject: rewrite entry resolution logic in TranslationIndex, hopefully fixing bugs --- src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java | 4 ++-- src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | 4 ++-- src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java | 3 ++- src/main/java/cuchaz/enigma/mapping/entry/DefEntry.java | 7 +++++++ src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java | 3 ++- src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java | 3 ++- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 src/main/java/cuchaz/enigma/mapping/entry/DefEntry.java (limited to 'src/main/java/cuchaz/enigma/mapping') diff --git a/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java b/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java index 10fb921..388e7ac 100644 --- a/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java +++ b/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java @@ -131,7 +131,7 @@ public class DirectionalTranslator implements Translator { private String translateFieldName(FieldEntry entry) { // resolve the class entry - ClassEntry resolvedClassEntry = this.index.resolveEntryOwner(entry, true); + ClassEntry resolvedClassEntry = this.index.resolveEntryOwner(entry); if (resolvedClassEntry != null) { // look for the class ClassMapping classMapping = findClassMapping(resolvedClassEntry); @@ -175,7 +175,7 @@ public class DirectionalTranslator implements Translator { private String translateMethodName(MethodEntry entry) { // resolve the class entry - ClassEntry resolvedOwner = this.index.resolveEntryOwner(entry, true); + ClassEntry resolvedOwner = this.index.resolveEntryOwner(entry); if (resolvedOwner != null) { // look for class ClassMapping classMapping = findClassMapping(resolvedOwner); diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java index 72a12c2..8ef4f12 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java @@ -92,9 +92,9 @@ public class MappingsRenamer { deobfName = NameValidator.validateFieldName(deobfName); FieldEntry targetEntry = entryPool.getField(obf.getOwnerClassEntry(), deobfName, obf.getDesc()); ClassEntry definedClass = null; - if (mappings.containsDeobfField(obf.getOwnerClassEntry(), deobfName) || index.containsEntryWithSameName(targetEntry)) + if (mappings.containsDeobfField(obf.getOwnerClassEntry(), deobfName) || index.containsEntryWithSameName(targetEntry)) { definedClass = obf.getOwnerClassEntry(); - else { + } else { for (ClassEntry ancestorEntry : this.index.getTranslationIndex().getAncestry(obf.getOwnerClassEntry())) { if (mappings.containsDeobfField(ancestorEntry, deobfName) || index.containsEntryWithSameName(targetEntry.updateOwnership(ancestorEntry))) { definedClass = ancestorEntry; diff --git a/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java index ac1fe2a..df72e7e 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java @@ -15,7 +15,7 @@ import com.google.common.base.Preconditions; import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.Signature; -public class ClassDefEntry extends ClassEntry { +public class ClassDefEntry extends ClassEntry implements DefEntry { private final AccessFlags access; private final Signature signature; @@ -31,6 +31,7 @@ public class ClassDefEntry extends ClassEntry { return signature; } + @Override public AccessFlags getAccess() { return access; } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/DefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/DefEntry.java new file mode 100644 index 0000000..43ad027 --- /dev/null +++ b/src/main/java/cuchaz/enigma/mapping/entry/DefEntry.java @@ -0,0 +1,7 @@ +package cuchaz.enigma.mapping.entry; + +import cuchaz.enigma.bytecode.AccessFlags; + +public interface DefEntry extends Entry { + AccessFlags getAccess(); +} diff --git a/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java index d18115b..223410f 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java @@ -16,7 +16,7 @@ import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.Signature; import cuchaz.enigma.mapping.TypeDescriptor; -public class FieldDefEntry extends FieldEntry { +public class FieldDefEntry extends FieldEntry implements DefEntry { private final AccessFlags access; private final Signature signature; @@ -28,6 +28,7 @@ public class FieldDefEntry extends FieldEntry { this.signature = signature; } + @Override public AccessFlags getAccess() { return access; } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java index ec3af69..960b08d 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java @@ -16,7 +16,7 @@ import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.MethodDescriptor; import cuchaz.enigma.mapping.Signature; -public class MethodDefEntry extends MethodEntry { +public class MethodDefEntry extends MethodEntry implements DefEntry { private final AccessFlags access; private final Signature signature; @@ -29,6 +29,7 @@ public class MethodDefEntry extends MethodEntry { this.signature = signature; } + @Override public AccessFlags getAccess() { return access; } -- cgit v1.2.3