summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/convert/MappingsConverter.java
diff options
context:
space:
mode:
authorGravatar Cuchaz2015-08-02 15:47:27 -0400
committerGravatar Cuchaz2015-08-02 15:47:27 -0400
commit4923fdfe8a01f361b76bd4c7d045184272d41ad5 (patch)
tree6692a634a597276f872d891799d60dfe4f074c53 /src/cuchaz/enigma/convert/MappingsConverter.java
parentMerged in mikesmiffy128/enigma/fix-unit-tests (pull request #2) (diff)
downloadenigma-fork-4923fdfe8a01f361b76bd4c7d045184272d41ad5.tar.gz
enigma-fork-4923fdfe8a01f361b76bd4c7d045184272d41ad5.tar.xz
enigma-fork-4923fdfe8a01f361b76bd4c7d045184272d41ad5.zip
fix up class matcher a bit
Diffstat (limited to 'src/cuchaz/enigma/convert/MappingsConverter.java')
-rw-r--r--src/cuchaz/enigma/convert/MappingsConverter.java27
1 files changed, 22 insertions, 5 deletions
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 {
207 newClassMapping = new ClassMapping(newObfClass.getName()); 207 newClassMapping = new ClassMapping(newObfClass.getName());
208 } 208 }
209 209
210 // copy fields 210 // migrate fields
211 for (FieldMapping fieldMapping : oldClassMapping.fields()) { 211 for (FieldMapping fieldMapping : oldClassMapping.fields()) {
212 newClassMapping.addFieldMapping(new FieldMapping(fieldMapping, replacer)); 212 if (canMigrate(fieldMapping.getObfType(), replacer)) {
213 newClassMapping.addFieldMapping(new FieldMapping(fieldMapping, replacer));
214 }
213 } 215 }
214 216
215 // copy methods 217 // migrate methods
216 for (MethodMapping methodMapping : oldClassMapping.methods()) { 218 for (MethodMapping oldMethodMapping : oldClassMapping.methods()) {
217 newClassMapping.addMethodMapping(new MethodMapping(methodMapping, replacer)); 219 if (canMigrate(oldMethodMapping.getObfSignature(), replacer)) {
220 newClassMapping.addMethodMapping(new MethodMapping(oldMethodMapping, replacer));
221 }
218 } 222 }
219 223
220 return newClassMapping; 224 return newClassMapping;
221 } 225 }
226
227 private static boolean canMigrate(Signature obfSignature, ClassNameReplacer replacer) {
228 for (Type type : obfSignature.types()) {
229 if (!canMigrate(type, replacer)) {
230 return false;
231 }
232 }
233 return true;
234 }
235
236 private static boolean canMigrate(Type type, ClassNameReplacer replacer) {
237 return !type.hasClass() || replacer.replace(type.getClassEntry().getClassName()) != null;
238 }
222 239
223 public static void convertMappings(Mappings mappings, BiMap<ClassEntry,ClassEntry> changes) { 240 public static void convertMappings(Mappings mappings, BiMap<ClassEntry,ClassEntry> changes) {
224 241