diff options
| author | 2018-12-09 09:18:12 +0100 | |
|---|---|---|
| committer | 2018-12-09 09:18:12 +0100 | |
| commit | ed51dfd4abf7f1955d5a8fdcd43dcc9e0b40a075 (patch) | |
| tree | ea19ac7a17e9fab329c11ad87e5f09564443c1c7 /src/main/java/cuchaz/enigma/analysis/SourceIndex.java | |
| parent | try hack to solve Darcula Ivy issue for now (diff) | |
| download | enigma-fork-ed51dfd4abf7f1955d5a8fdcd43dcc9e0b40a075.tar.gz enigma-fork-ed51dfd4abf7f1955d5a8fdcd43dcc9e0b40a075.tar.xz enigma-fork-ed51dfd4abf7f1955d5a8fdcd43dcc9e0b40a075.zip | |
fix SourceIndex remap bugs
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/SourceIndex.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndex.java | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java index 4c84e69..3e0d66b 100644 --- a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java | |||
| @@ -68,20 +68,21 @@ public class SourceIndex { | |||
| 68 | declarationToToken.put(entry, tokenMap.getOrDefault(token, token)); | 68 | declarationToToken.put(entry, tokenMap.getOrDefault(token, token)); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | for (Token token : Lists.newArrayList(tokenToReference.keySet())) { | 71 | for (EntryReference<Entry, Entry> ref : referenceToTokens.keySet()) { |
| 72 | EntryReference<Entry, Entry> e = tokenToReference.remove(token); | 72 | Collection<Token> oldTokens = referenceToTokens.get(ref); |
| 73 | tokenToReference.put(tokenMap.getOrDefault(token, token), e); | 73 | List<Token> newTokens = new ArrayList<>(oldTokens.size()); |
| 74 | } | ||
| 75 | |||
| 76 | for (EntryReference<Entry, Entry> ref : Lists.newArrayList(referenceToTokens.keySet())) { | ||
| 77 | List<Token> newTokens = new ArrayList<>(); | ||
| 78 | 74 | ||
| 79 | for (Token token : referenceToTokens.get(ref)) { | 75 | for (Token token : oldTokens) { |
| 80 | newTokens.add(tokenMap.getOrDefault(token, token)); | 76 | newTokens.add(tokenMap.getOrDefault(token, token)); |
| 81 | } | 77 | } |
| 82 | 78 | ||
| 83 | referenceToTokens.removeAll(ref); | 79 | referenceToTokens.replaceValues(ref, newTokens); |
| 84 | referenceToTokens.putAll(ref, newTokens); | 80 | } |
| 81 | |||
| 82 | Map<Token, EntryReference<Entry, Entry>> tokenToReferenceCopy = Maps.newHashMap(tokenToReference); | ||
| 83 | tokenToReference.clear(); | ||
| 84 | for (Token token : tokenToReferenceCopy.keySet()) { | ||
| 85 | tokenToReference.put(tokenMap.getOrDefault(token, token), tokenToReferenceCopy.get(token)); | ||
| 85 | } | 86 | } |
| 86 | } | 87 | } |
| 87 | 88 | ||