From cbda8056ceaa1eb7b5bbbe43d030be950156d97b Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 23 Jun 2018 19:15:20 +0200 Subject: Fix array translation in method calls --- .../java/cuchaz/enigma/mapping/DirectionalTranslator.java | 14 ++++++++++++-- src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) (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 ac17999..b0bb129 100644 --- a/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java +++ b/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java @@ -48,13 +48,23 @@ public class DirectionalTranslator implements Translator { @Override public ClassEntry getTranslatedClass(ClassEntry entry) { - String className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); + String className; + if (entry.isArray()) { + className = this.getTranslatedTypeDesc(new TypeDescriptor(entry.getName())).toString(); + } else { + className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); + } return new ClassEntry(className); } @Override public ClassDefEntry getTranslatedClassDef(ClassDefEntry entry) { - String className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); + String className; + if (entry.isArray()) { + className = this.getTranslatedTypeDesc(new TypeDescriptor(entry.getName())).toString(); + } else { + className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); + } Signature translatedSignature = this.getTranslatedSignature(entry.getSignature()); return new ClassDefEntry(className, translatedSignature, getClassModifier(entry).transform(entry.getAccess())); } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java index fc604d8..c795825 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java @@ -77,6 +77,10 @@ public class ClassEntry implements Entry { return this.name; } + public boolean isArray() { + return this.name.lastIndexOf('[') >= 0; + } + public boolean isInnerClass() { return this.name.lastIndexOf('$') >= 0; } -- cgit v1.2.3