summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
index 8edea16e..3f4b96f9 100644
--- a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
+++ b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
@@ -10,10 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.bytecode; 11package cuchaz.enigma.bytecode;
12 12
13import cuchaz.enigma.mapping.ArgumentEntry; 13import cuchaz.enigma.mapping.*;
14import cuchaz.enigma.mapping.BehaviorEntry;
15import cuchaz.enigma.mapping.EntryFactory;
16import cuchaz.enigma.mapping.Translator;
17import javassist.CtBehavior; 14import javassist.CtBehavior;
18import javassist.CtClass; 15import javassist.CtClass;
19import javassist.bytecode.*; 16import javassist.bytecode.*;
@@ -83,7 +80,20 @@ public class LocalVariableRenamer {
83 int argi = i - starti; 80 int argi = i - starti;
84 String argName = this.translator.translate(new ArgumentEntry(behaviorEntry, argi, "")); 81 String argName = this.translator.translate(new ArgumentEntry(behaviorEntry, argi, ""));
85 if (argName == null) { 82 if (argName == null) {
86 argName = "a" + (argi + 1); 83 Type argType = behaviorEntry.getSignature().getArgumentTypes().get(argi);
84 // Unfortunately each of these have different name getters, so they have different code paths
85 if (argType.isPrimitive()) {
86 Type.Primitive argCls = argType.getPrimitive();
87 argName = "a" + argCls.name() + (argi + 1);
88 } else if (argType.isArray()) {
89 // List types would require this whole block again, so just go with aListx
90 argName = "aList" + (argi + 1);
91 } else if (argType.isClass()) {
92 ClassEntry argClsTrans = this.translator.translateEntry(argType.getClassEntry());
93 argName = "a" + argClsTrans.getSimpleName().replace("$", "") + (argi + 1);
94 } else {
95 argName = "a" + (argi + 1);
96 }
87 } 97 }
88 renameVariable(table, i, constants.addUtf8Info(argName)); 98 renameVariable(table, i, constants.addUtf8Info(argName));
89 } 99 }