diff options
| author | 2021-11-17 11:38:00 +0000 | |
|---|---|---|
| committer | 2021-11-17 11:38:00 +0000 | |
| commit | f08b1bdf9a37c4c70beac6772d8c69131bf1d606 (patch) | |
| tree | f39400e8080279ead526b869e10e9e8f0acfaf26 | |
| parent | Update cfr (diff) | |
| download | enigma-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.java | 23 |
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 { |