diff options
| -rw-r--r-- | src/main/java/cuchaz/enigma/Deobfuscator.java | 2 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/ArgumentEntry.java | 6 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | 21 |
3 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index b2f361e9..4bd9414d 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java | |||
| @@ -463,7 +463,7 @@ public class Deobfuscator { | |||
| 463 | } else if (obfEntry instanceof ConstructorEntry) { | 463 | } else if (obfEntry instanceof ConstructorEntry) { |
| 464 | throw new IllegalArgumentException("Cannot rename constructors"); | 464 | throw new IllegalArgumentException("Cannot rename constructors"); |
| 465 | } else if (obfEntry instanceof ArgumentEntry) { | 465 | } else if (obfEntry instanceof ArgumentEntry) { |
| 466 | this.renamer.setArgumentName((ArgumentEntry) obfEntry, newName); | 466 | this.renamer.setArgumentTreeName((ArgumentEntry) obfEntry, newName); |
| 467 | } else { | 467 | } else { |
| 468 | throw new Error("Unknown entry type: " + obfEntry.getClass().getName()); | 468 | throw new Error("Unknown entry type: " + obfEntry.getClass().getName()); |
| 469 | } | 469 | } |
diff --git a/src/main/java/cuchaz/enigma/mapping/ArgumentEntry.java b/src/main/java/cuchaz/enigma/mapping/ArgumentEntry.java index 741849a9..662516da 100644 --- a/src/main/java/cuchaz/enigma/mapping/ArgumentEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/ArgumentEntry.java | |||
| @@ -46,6 +46,12 @@ public class ArgumentEntry implements Entry { | |||
| 46 | this.name = other.name; | 46 | this.name = other.name; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | public ArgumentEntry(ArgumentEntry other, BehaviorEntry entry) { | ||
| 50 | this.behaviorEntry = entry; | ||
| 51 | this.index = other.index; | ||
| 52 | this.name = other.name; | ||
| 53 | } | ||
| 54 | |||
| 49 | public BehaviorEntry getBehaviorEntry() { | 55 | public BehaviorEntry getBehaviorEntry() { |
| 50 | return this.behaviorEntry; | 56 | return this.behaviorEntry; |
| 51 | } | 57 | } |
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java index 80028137..5d23dc0b 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | |||
| @@ -148,6 +148,27 @@ public class MappingsRenamer { | |||
| 148 | classMapping.setMethodName(obf.getName(), obf.getSignature(), obf.getName()); | 148 | classMapping.setMethodName(obf.getName(), obf.getSignature(), obf.getName()); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | public void setArgumentTreeName(ArgumentEntry obf, String deobfName) { | ||
| 152 | if (!(obf.getBehaviorEntry() instanceof MethodEntry)) { | ||
| 153 | setArgumentName(obf, deobfName); | ||
| 154 | return; | ||
| 155 | } | ||
| 156 | |||
| 157 | MethodEntry obfMethod = (MethodEntry) obf.getBehaviorEntry(); | ||
| 158 | |||
| 159 | Set<MethodEntry> implementations = m_index.getRelatedMethodImplementations(obfMethod); | ||
| 160 | for (MethodEntry entry : implementations) { | ||
| 161 | // NOTE: don't need to check arguments for name collisions with names determined by Procyon | ||
| 162 | if (m_mappings.containsArgument(entry, deobfName)) { | ||
| 163 | throw new IllegalNameException(deobfName, "There is already an argument with that name"); | ||
| 164 | } | ||
| 165 | } | ||
| 166 | |||
| 167 | for (MethodEntry entry : implementations) { | ||
| 168 | setArgumentName(new ArgumentEntry(obf, entry), deobfName); | ||
| 169 | } | ||
| 170 | } | ||
| 171 | |||
| 151 | public void setArgumentName(ArgumentEntry obf, String deobfName) { | 172 | public void setArgumentName(ArgumentEntry obf, String deobfName) { |
| 152 | deobfName = NameValidator.validateArgumentName(deobfName); | 173 | deobfName = NameValidator.validateArgumentName(deobfName); |
| 153 | // NOTE: don't need to check arguments for name collisions with names determined by Procyon | 174 | // NOTE: don't need to check arguments for name collisions with names determined by Procyon |