summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/SourceIndex.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/SourceIndex.java21
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