summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/bytecode
diff options
context:
space:
mode:
authorGravatar gegy10002018-05-19 19:00:56 +0200
committerGravatar gegy10002018-05-19 19:00:56 +0200
commit93c771a890f0f73b8caebafa4667e0535703cfa2 (patch)
treecf6b3abcd5019f13151da22bc2910a6609eb75b2 /src/main/java/cuchaz/enigma/bytecode
parentAnnotation + inner class translation (diff)
downloadenigma-fork-93c771a890f0f73b8caebafa4667e0535703cfa2.tar.gz
enigma-fork-93c771a890f0f73b8caebafa4667e0535703cfa2.tar.xz
enigma-fork-93c771a890f0f73b8caebafa4667e0535703cfa2.zip
Fix inner class mapping
Diffstat (limited to 'src/main/java/cuchaz/enigma/bytecode')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java
index 5fdfaf1..dcc221e 100644
--- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java
+++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java
@@ -13,7 +13,9 @@ package cuchaz.enigma.bytecode.translators;
13 13
14import cuchaz.enigma.analysis.JarIndex; 14import cuchaz.enigma.analysis.JarIndex;
15import cuchaz.enigma.bytecode.AccessFlags; 15import cuchaz.enigma.bytecode.AccessFlags;
16import cuchaz.enigma.mapping.*; 16import cuchaz.enigma.mapping.MethodDescriptor;
17import cuchaz.enigma.mapping.Translator;
18import cuchaz.enigma.mapping.TypeDescriptor;
17import cuchaz.enigma.mapping.entry.*; 19import cuchaz.enigma.mapping.entry.*;
18import org.objectweb.asm.*; 20import org.objectweb.asm.*;
19 21
@@ -101,18 +103,13 @@ public class TranslationClassVisitor extends ClassVisitor {
101 103
102 @Override 104 @Override
103 public void visitInnerClass(String name, String outerName, String innerName, int access) { 105 public void visitInnerClass(String name, String outerName, String innerName, int access) {
104 // If this is not an anonymous class 106 ClassDefEntry translatedEntry = translator.getTranslatedClassDef(new ClassDefEntry(name, new AccessFlags(access)));
105 if (innerName != null && outerName != null) { 107 String translatedName = translatedEntry.getName();
106 ClassDefEntry translatedEntry = translator.getTranslatedClassDef(new ClassDefEntry(innerName, new AccessFlags(access))); 108 int separatorIndex = translatedName.lastIndexOf("$");
107 ClassEntry outerEntry = translator.getTranslatedClass(entryPool.getClass(outerName)); 109 String parentName = translatedName.substring(0, separatorIndex);
108 ClassEntry innerEntry = translator.getTranslatedClass(entryPool.getClass(innerName)); 110 String childName = translatedName.substring(separatorIndex + 1);
109 super.visitInnerClass(translatedEntry.getName(), outerEntry.getName(), innerEntry.getName(), translatedEntry.getAccess().getFlags()); 111
110 } else { 112 ClassEntry outerEntry = translator.getTranslatedClass(entryPool.getClass(parentName));
111 int separatorIndex = name.lastIndexOf("$"); 113 super.visitInnerClass(translatedName, outerEntry.getName(), childName, translatedEntry.getAccess().getFlags());
112 String parentName = name.substring(0, separatorIndex);
113 String childName = name.substring(separatorIndex + 1);
114 ClassEntry outerEntry = translator.getTranslatedClass(entryPool.getClass(parentName));
115 super.visitInnerClass(outerEntry.getName() + "$" + childName, outerName, innerName, access);
116 }
117 } 114 }
118} 115}