summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java6
-rw-r--r--src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java14
-rw-r--r--src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java4
3 files changed, 17 insertions, 7 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java
index 21231463..4f4a31e3 100644
--- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java
+++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java
@@ -48,11 +48,7 @@ public class TranslationMethodVisitor extends MethodVisitor {
48 Object object = array[i]; 48 Object object = array[i];
49 if (object instanceof String) { 49 if (object instanceof String) {
50 String type = (String) object; 50 String type = (String) object;
51 if (type.startsWith("[") || type.endsWith(";")) { 51 array[i] = translator.getTranslatedClass(new ClassEntry(type)).getName();
52 array[i] = translator.getTranslatedType(Type.getType(type)).getDescriptor();
53 } else {
54 array[i] = translator.getTranslatedClass(new ClassEntry(type)).getName();
55 }
56 } 52 }
57 } 53 }
58 return array; 54 return array;
diff --git a/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java b/src/main/java/cuchaz/enigma/mapping/DirectionalTranslator.java
index ac179992..b0bb129d 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 {
48 48
49 @Override 49 @Override
50 public ClassEntry getTranslatedClass(ClassEntry entry) { 50 public ClassEntry getTranslatedClass(ClassEntry entry) {
51 String className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); 51 String className;
52 if (entry.isArray()) {
53 className = this.getTranslatedTypeDesc(new TypeDescriptor(entry.getName())).toString();
54 } else {
55 className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry);
56 }
52 return new ClassEntry(className); 57 return new ClassEntry(className);
53 } 58 }
54 59
55 @Override 60 @Override
56 public ClassDefEntry getTranslatedClassDef(ClassDefEntry entry) { 61 public ClassDefEntry getTranslatedClassDef(ClassDefEntry entry) {
57 String className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry); 62 String className;
63 if (entry.isArray()) {
64 className = this.getTranslatedTypeDesc(new TypeDescriptor(entry.getName())).toString();
65 } else {
66 className = entry.isInnerClass() ? translateInnerClassName(entry) : translateClassName(entry);
67 }
58 Signature translatedSignature = this.getTranslatedSignature(entry.getSignature()); 68 Signature translatedSignature = this.getTranslatedSignature(entry.getSignature());
59 return new ClassDefEntry(className, translatedSignature, getClassModifier(entry).transform(entry.getAccess())); 69 return new ClassDefEntry(className, translatedSignature, getClassModifier(entry).transform(entry.getAccess()));
60 } 70 }
diff --git a/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/ClassEntry.java
index fc604d82..c7958256 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 {
77 return this.name; 77 return this.name;
78 } 78 }
79 79
80 public boolean isArray() {
81 return this.name.lastIndexOf('[') >= 0;
82 }
83
80 public boolean isInnerClass() { 84 public boolean isInnerClass() {
81 return this.name.lastIndexOf('$') >= 0; 85 return this.name.lastIndexOf('$') >= 0;
82 } 86 }