diff options
| author | 2015-08-02 15:47:27 -0400 | |
|---|---|---|
| committer | 2015-08-02 15:47:27 -0400 | |
| commit | 4923fdfe8a01f361b76bd4c7d045184272d41ad5 (patch) | |
| tree | 6692a634a597276f872d891799d60dfe4f074c53 /src/cuchaz/enigma/convert/MappingsConverter.java | |
| parent | Merged in mikesmiffy128/enigma/fix-unit-tests (pull request #2) (diff) | |
| download | enigma-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.java | 27 |
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 | ||