diff options
| -rw-r--r-- | build.gradle | 3 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndex.java | 21 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndexClassVisitor.java | 4 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/GuiController.java | 8 |
4 files changed, 16 insertions, 20 deletions
diff --git a/build.gradle b/build.gradle index a0373b9c..e88a3466 100644 --- a/build.gradle +++ b/build.gradle | |||
| @@ -77,8 +77,7 @@ dependencies { | |||
| 77 | compile 'org.ow2.asm:asm-tree:7.0' | 77 | compile 'org.ow2.asm:asm-tree:7.0' |
| 78 | compile 'org.ow2.asm:asm-util:7.0' | 78 | compile 'org.ow2.asm:asm-util:7.0' |
| 79 | 79 | ||
| 80 | compile name: "darcula", version: "1.0.0" | 80 | application name: "darcula", version: "1.0.0" |
| 81 | |||
| 82 | application 'de.sciss:syntaxpane:1.1.+' | 81 | application 'de.sciss:syntaxpane:1.1.+' |
| 83 | 82 | ||
| 84 | testCompile 'junit:junit:4.+' | 83 | testCompile 'junit:junit:4.+' |
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java index 4c84e69d..3e0d66b4 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 dd5bcef0..cad08574 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 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index e2f332d0..acb0ebbb 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java | |||
| @@ -345,7 +345,7 @@ public class GuiController { | |||
| 345 | List<Token> otherTokens = Lists.newArrayList(); | 345 | List<Token> otherTokens = Lists.newArrayList(); |
| 346 | 346 | ||
| 347 | int offset = 0; | 347 | int offset = 0; |
| 348 | Map<Token, Token> tokenRemap = new IdentityHashMap<>(); | 348 | Map<Token, Token> tokenRemap = new HashMap<>(); |
| 349 | boolean remapped = false; | 349 | boolean remapped = false; |
| 350 | 350 | ||
| 351 | for (Token inToken : index.referenceTokens()) { | 351 | for (Token inToken : index.referenceTokens()) { |
| @@ -353,7 +353,7 @@ public class GuiController { | |||
| 353 | Token token = inToken.move(offset); | 353 | Token token = inToken.move(offset); |
| 354 | 354 | ||
| 355 | if (referenceIsRenameable(reference)) { | 355 | if (referenceIsRenameable(reference)) { |
| 356 | boolean renamed = false; | 356 | boolean added = false; |
| 357 | 357 | ||
| 358 | if (!entryHasDeobfuscatedName(reference.getNameableEntry())) { | 358 | if (!entryHasDeobfuscatedName(reference.getNameableEntry())) { |
| 359 | Entry obfEntry = deobfuscator.obfuscateEntry(reference.getNameableEntry()); | 359 | Entry obfEntry = deobfuscator.obfuscateEntry(reference.getNameableEntry()); |
| @@ -364,7 +364,7 @@ public class GuiController { | |||
| 364 | proposedTokens.add(token); | 364 | proposedTokens.add(token); |
| 365 | offset += token.getRenameOffset(proposal); | 365 | offset += token.getRenameOffset(proposal); |
| 366 | sourceString = token.rename(sourceString, proposal); | 366 | sourceString = token.rename(sourceString, proposal); |
| 367 | renamed = true; | 367 | added = true; |
| 368 | remapped = true; | 368 | remapped = true; |
| 369 | break; | 369 | break; |
| 370 | } | 370 | } |
| @@ -372,7 +372,7 @@ public class GuiController { | |||
| 372 | } | 372 | } |
| 373 | } | 373 | } |
| 374 | 374 | ||
| 375 | if (!renamed) { | 375 | if (!added) { |
| 376 | if (entryHasDeobfuscatedName(reference.getNameableEntry())) { | 376 | if (entryHasDeobfuscatedName(reference.getNameableEntry())) { |
| 377 | deobfuscatedTokens.add(token); | 377 | deobfuscatedTokens.add(token); |
| 378 | } else { | 378 | } else { |