Fix #47: RemappingClassAdapter remapped names twice.
This commit is contained in:
parent
908f24e8ec
commit
3e4fbfb967
@ -59,6 +59,7 @@ package net.md_5.specialsource;
|
|||||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import net.md_5.specialsource.repo.ClassRepo;
|
import net.md_5.specialsource.repo.ClassRepo;
|
||||||
import org.objectweb.asm.Attribute;
|
import org.objectweb.asm.Attribute;
|
||||||
import org.objectweb.asm.ClassVisitor;
|
import org.objectweb.asm.ClassVisitor;
|
||||||
@ -67,7 +68,6 @@ import org.objectweb.asm.Label;
|
|||||||
import org.objectweb.asm.MethodVisitor;
|
import org.objectweb.asm.MethodVisitor;
|
||||||
import org.objectweb.asm.commons.ClassRemapper;
|
import org.objectweb.asm.commons.ClassRemapper;
|
||||||
import org.objectweb.asm.commons.FieldRemapper;
|
import org.objectweb.asm.commons.FieldRemapper;
|
||||||
import org.objectweb.asm.commons.MethodRemapper;
|
|
||||||
|
|
||||||
public class RemappingClassAdapter extends ClassRemapper {
|
public class RemappingClassAdapter extends ClassRemapper {
|
||||||
|
|
||||||
@ -76,6 +76,8 @@ public class RemappingClassAdapter extends ClassRemapper {
|
|||||||
|
|
||||||
public RemappingClassAdapter(final ClassVisitor cv, final CustomRemapper remapper, ClassRepo repo) {
|
public RemappingClassAdapter(final ClassVisitor cv, final CustomRemapper remapper, ClassRepo repo) {
|
||||||
super(cv, remapper);
|
super(cv, remapper);
|
||||||
|
Preconditions.checkArgument(cv != null, "cv");
|
||||||
|
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
this.remapper = remapper;
|
this.remapper = remapper;
|
||||||
}
|
}
|
||||||
@ -84,7 +86,7 @@ public class RemappingClassAdapter extends ClassRemapper {
|
|||||||
public MethodVisitor visitMethod(int access, String name, String desc,
|
public MethodVisitor visitMethod(int access, String name, String desc,
|
||||||
String signature, String[] exceptions) {
|
String signature, String[] exceptions) {
|
||||||
String newDesc = remapper.mapMethodDesc(desc);
|
String newDesc = remapper.mapMethodDesc(desc);
|
||||||
MethodVisitor mv = super.visitMethod(access, remapper.mapMethodName(
|
MethodVisitor mv = cv.visitMethod(access, remapper.mapMethodName(
|
||||||
className, name, desc, access), newDesc, remapper.mapSignature(
|
className, name, desc, access), newDesc, remapper.mapSignature(
|
||||||
signature, false),
|
signature, false),
|
||||||
exceptions == null ? null : remapper.mapTypes(exceptions));
|
exceptions == null ? null : remapper.mapTypes(exceptions));
|
||||||
@ -94,7 +96,7 @@ public class RemappingClassAdapter extends ClassRemapper {
|
|||||||
@Override
|
@Override
|
||||||
public FieldVisitor visitField(int access, String name, String desc,
|
public FieldVisitor visitField(int access, String name, String desc,
|
||||||
String signature, Object value) {
|
String signature, Object value) {
|
||||||
FieldVisitor fv = super.visitField(access,
|
FieldVisitor fv = cv.visitField(access,
|
||||||
remapper.mapFieldName(className, name, desc, access),
|
remapper.mapFieldName(className, name, desc, access),
|
||||||
remapper.mapDesc(desc), remapper.mapSignature(signature, true),
|
remapper.mapDesc(desc), remapper.mapSignature(signature, true),
|
||||||
remapper.mapValue(value));
|
remapper.mapValue(value));
|
||||||
@ -105,19 +107,12 @@ public class RemappingClassAdapter extends ClassRemapper {
|
|||||||
public void visitInnerClass(String name, String outerName,
|
public void visitInnerClass(String name, String outerName,
|
||||||
String innerName, int access) {
|
String innerName, int access) {
|
||||||
String newName = remapper.mapType(name);
|
String newName = remapper.mapType(name);
|
||||||
super.visitInnerClass(newName,
|
cv.visitInnerClass(newName,
|
||||||
outerName == null ? null : remapper.mapType(outerName),
|
outerName == null ? null : remapper.mapType(outerName),
|
||||||
innerName == null ? null : newName.substring(newName.lastIndexOf(newName.contains("$") ? '$' : '/') + 1),
|
innerName == null ? null : newName.substring(newName.lastIndexOf(newName.contains("$") ? '$' : '/') + 1),
|
||||||
access);
|
access);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void visitOuterClass(String owner, String name, String desc) {
|
|
||||||
super.visitOuterClass(remapper.mapType(owner), name == null ? null
|
|
||||||
: remapper.mapMethodName(owner, name, desc),
|
|
||||||
desc == null ? null : remapper.mapMethodDesc(desc));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected FieldVisitor createFieldRemapper(FieldVisitor fv) {
|
protected FieldVisitor createFieldRemapper(FieldVisitor fv) {
|
||||||
return new FieldRemapper(fv, remapper) {
|
return new FieldRemapper(fv, remapper) {
|
||||||
|
Loading…
Reference in New Issue
Block a user