Add field access checking. Still convinced this will map the declarations correctly but not the invocations.

This commit is contained in:
md_5 2013-08-05 16:38:54 +10:00
parent b83f20f9a9
commit e7b7d101da
2 changed files with 19 additions and 3 deletions

View File

@ -148,8 +148,8 @@ public class JarRemapper extends Remapper {
}
@Override
public String mapFieldName(String owner, String name, String desc) {
String mapped = jarMapping.tryClimb(jarMapping.fields, NodeType.FIELD, owner, name, 0);
public String mapFieldName(String owner, String name, String desc, int access) {
String mapped = jarMapping.tryClimb(jarMapping.fields, NodeType.FIELD, owner, name, access);
return mapped == null ? name : mapped;
}
@ -248,6 +248,16 @@ public class JarRemapper extends Remapper {
newDesc, mv);
}
@Override
public FieldVisitor visitField(int access, String name, String desc,
String signature, Object value) {
FieldVisitor fv = super.visitField(access,
remapper.mapFieldName(className, name, desc, access),
remapper.mapDesc(desc), remapper.mapSignature(signature, true),
remapper.mapValue(value));
return fv == null ? null : createRemappingFieldAdapter(fv);
}
@Override
protected MethodVisitor createRemappingMethodAdapter(int access, String newDesc, MethodVisitor sup) {
MethodVisitor remap = new UnsortedRemappingMethodAdapter(access, newDesc, sup, remapper);

View File

@ -183,7 +183,7 @@ public abstract class Remapper {
* @return new name of the method
*/
public String mapMethodName(String owner, String name, String desc) {
return mapMethodName(owner, name, desc, 0); // Spigot
return mapMethodName(owner, name, desc, 0); // SS
}
// SS Start
@ -217,8 +217,14 @@ public abstract class Remapper {
* @return new name of the field.
*/
public String mapFieldName(String owner, String name, String desc) {
return mapFieldName(owner, name, desc, 0); // SS
}
// SS Start
public String mapFieldName(String owner, String name, String desc, int access) {
return name;
}
// SS End
/**
* Map type name to the new name. Subclasses can override.