From 4923fdfe8a01f361b76bd4c7d045184272d41ad5 Mon Sep 17 00:00:00 2001 From: Cuchaz Date: Sun, 2 Aug 2015 15:47:27 -0400 Subject: fix up class matcher a bit --- src/cuchaz/enigma/convert/MappingsConverter.java | 27 +++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/cuchaz/enigma/convert/MappingsConverter.java') diff --git a/src/cuchaz/enigma/convert/MappingsConverter.java b/src/cuchaz/enigma/convert/MappingsConverter.java index b457d6c..b404e8f 100644 --- a/src/cuchaz/enigma/convert/MappingsConverter.java +++ b/src/cuchaz/enigma/convert/MappingsConverter.java @@ -207,18 +207,35 @@ public class MappingsConverter { newClassMapping = new ClassMapping(newObfClass.getName()); } - // copy fields + // migrate fields for (FieldMapping fieldMapping : oldClassMapping.fields()) { - newClassMapping.addFieldMapping(new FieldMapping(fieldMapping, replacer)); + if (canMigrate(fieldMapping.getObfType(), replacer)) { + newClassMapping.addFieldMapping(new FieldMapping(fieldMapping, replacer)); + } } - // copy methods - for (MethodMapping methodMapping : oldClassMapping.methods()) { - newClassMapping.addMethodMapping(new MethodMapping(methodMapping, replacer)); + // migrate methods + for (MethodMapping oldMethodMapping : oldClassMapping.methods()) { + if (canMigrate(oldMethodMapping.getObfSignature(), replacer)) { + newClassMapping.addMethodMapping(new MethodMapping(oldMethodMapping, replacer)); + } } return newClassMapping; } + + private static boolean canMigrate(Signature obfSignature, ClassNameReplacer replacer) { + for (Type type : obfSignature.types()) { + if (!canMigrate(type, replacer)) { + return false; + } + } + return true; + } + + private static boolean canMigrate(Type type, ClassNameReplacer replacer) { + return !type.hasClass() || replacer.replace(type.getClassEntry().getClassName()) != null; + } public static void convertMappings(Mappings mappings, BiMap changes) { -- cgit v1.2.3