diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis')
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndex.java | 21 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java | 4 |
2 files changed, 11 insertions, 14 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 | ||
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java b/src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java index dd5bcef..cad0857 100644 --- a/src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java +++ b/src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java | |||
| @@ -24,9 +24,7 @@ import cuchaz.enigma.mapping.entry.*; | |||
| 24 | public class SourceIndexClassVisitor extends SourceIndexVisitor { | 24 | public class SourceIndexClassVisitor extends SourceIndexVisitor { |
| 25 | private final ReferencedEntryPool entryPool; | 25 | private final ReferencedEntryPool entryPool; |
| 26 | private final ProcyonEntryFactory entryFactory; | 26 | private final ProcyonEntryFactory entryFactory; |
| 27 | |||
| 28 | private ClassDefEntry classEntry; | 27 | private ClassDefEntry classEntry; |
| 29 | private boolean isEnum; | ||
| 30 | 28 | ||
| 31 | public SourceIndexClassVisitor(ReferencedEntryPool entryPool, ClassDefEntry classEntry) { | 29 | public SourceIndexClassVisitor(ReferencedEntryPool entryPool, ClassDefEntry classEntry) { |
| 32 | super(entryPool); | 30 | super(entryPool); |
| @@ -88,7 +86,6 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor { | |||
| 88 | assert (node.getVariables().size() == 1); | 86 | assert (node.getVariables().size() == 1); |
| 89 | VariableInitializer variable = node.getVariables().firstOrNullObject(); | 87 | VariableInitializer variable = node.getVariables().firstOrNullObject(); |
| 90 | index.addDeclaration(variable.getNameToken(), fieldEntry); | 88 | index.addDeclaration(variable.getNameToken(), fieldEntry); |
| 91 | |||
| 92 | return recurse(node, index); | 89 | return recurse(node, index); |
| 93 | } | 90 | } |
| 94 | 91 | ||
| @@ -98,7 +95,6 @@ public class SourceIndexClassVisitor extends SourceIndexVisitor { | |||
| 98 | FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION); | 95 | FieldDefinition def = node.getUserData(Keys.FIELD_DEFINITION); |
| 99 | FieldDefEntry fieldEntry = entryFactory.getFieldDefEntry(def); | 96 | FieldDefEntry fieldEntry = entryFactory.getFieldDefEntry(def); |
| 100 | index.addDeclaration(node.getNameToken(), fieldEntry); | 97 | index.addDeclaration(node.getNameToken(), fieldEntry); |
| 101 | this.isEnum = true; | ||
| 102 | return recurse(node, index); | 98 | return recurse(node, index); |
| 103 | } | 99 | } |
| 104 | } | 100 | } |