From e87c7889c9031d8ea37336325dee48ec9c6d7e6d Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Mon, 27 Jul 2015 23:33:06 -0700 Subject: [PATCH] Remap inner class names. --- .../specialsource/RemappingClassAdapter.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java b/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java index c77f3fa..77b3927 100644 --- a/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java +++ b/src/main/java/net/md_5/specialsource/RemappingClassAdapter.java @@ -73,7 +73,7 @@ import org.objectweb.asm.commons.RemappingAnnotationAdapter; /** * A {@link ClassVisitor} for type remapping. - * + * * @author Eugene Kuleshov */ public class RemappingClassAdapter extends ClassVisitor { @@ -81,7 +81,7 @@ public class RemappingClassAdapter extends ClassVisitor { protected final CustomRemapper remapper; protected ClassRepo repo; protected String className; - + public RemappingClassAdapter(final ClassVisitor cv, final CustomRemapper remapper, ClassRepo repo) { this(Opcodes.ASM5, cv, remapper); this.repo = repo; @@ -133,9 +133,11 @@ public class RemappingClassAdapter extends ClassVisitor { @Override public void visitInnerClass(String name, String outerName, String innerName, int access) { - // TODO should innerName be changed? - super.visitInnerClass(remapper.mapType(name), outerName == null ? null - : remapper.mapType(outerName), innerName, access); + String newName = remapper.mapType(name); + super.visitInnerClass(newName, + outerName == null ? null : remapper.mapType(outerName), + innerName == null ? null : newName.substring(newName.lastIndexOf(newName.contains("$") ? '$' : '/') + 1), + access); } @Override @@ -144,7 +146,7 @@ public class RemappingClassAdapter extends ClassVisitor { : remapper.mapMethodName(owner, name, desc), desc == null ? null : remapper.mapMethodDesc(desc)); } - + protected FieldVisitor createRemappingFieldAdapter(FieldVisitor sup) { return new FieldVisitor(Opcodes.ASM5, sup) { @Override @@ -191,7 +193,7 @@ public class RemappingClassAdapter extends ClassVisitor { AnnotationVisitor av) { return new RemappingAnnotationAdapter(av, remapper); } - + @Override public void visitSource(String source, String debug) { if (!SpecialSource.kill_source && cv != null) {