summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar modmuss502021-11-17 11:38:00 +0000
committerGravatar GitHub2021-11-17 11:38:00 +0000
commitf08b1bdf9a37c4c70beac6772d8c69131bf1d606 (patch)
treef39400e8080279ead526b869e10e9e8f0acfaf26
parentUpdate cfr (diff)
downloadenigma-f08b1bdf9a37c4c70beac6772d8c69131bf1d606.tar.gz
enigma-f08b1bdf9a37c4c70beac6772d8c69131bf1d606.tar.xz
enigma-f08b1bdf9a37c4c70beac6772d8c69131bf1d606.zip
Don't drop none root method mappings that have args/local mappings. (#434)
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java
index 392b1a67..33247fa6 100644
--- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java
+++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java
@@ -67,8 +67,29 @@ public class MappingsChecker {
67 if (!index.getEntryIndex().hasEntry(entry)) { 67 if (!index.getEntryIndex().hasEntry(entry)) {
68 return true; 68 return true;
69 } 69 }
70
71 if (entry instanceof LocalVariableEntry localVariableEntry) {
72 // Drop local variables only if the method entry is to be dropped
73 return shouldDropEntry(localVariableEntry.getParent());
74 }
75
70 Collection<Entry<?>> resolvedEntries = index.getEntryResolver().resolveEntry(entry, ResolutionStrategy.RESOLVE_ROOT); 76 Collection<Entry<?>> resolvedEntries = index.getEntryResolver().resolveEntry(entry, ResolutionStrategy.RESOLVE_ROOT);
71 return !resolvedEntries.contains(entry); 77
78 if (resolvedEntries.isEmpty()) {
79 // Entry doesn't exist at all, drop it.
80 return true;
81 } else if (resolvedEntries.contains(entry)) {
82 // Entry is the root, don't drop it.
83 return false;
84 }
85
86 if (entry instanceof MethodEntry && mappings.getChildren(entry).size() > 0) {
87 // Method entry has parameter names, keep it even though it's not the root.
88 return false;
89 }
90
91 // Entry is not the root, and is not a method with params
92 return true;
72 } 93 }
73 94
74 public static class Dropped { 95 public static class Dropped {