From 4ff89cb1d48cb6916220ee308bf40810cfd868e2 Mon Sep 17 00:00:00 2001 From: Gegy Date: Sat, 15 Dec 2018 22:29:41 +0200 Subject: Tweak variable name generation (#86) * Don't apply offset to all methods in abstract class * Tweak local variable naming --- .../java/cuchaz/enigma/mapping/entry/MethodDefEntry.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/main/java/cuchaz/enigma/mapping/entry') diff --git a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java index 960b08d..fa9e668 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java @@ -42,4 +42,20 @@ public class MethodDefEntry extends MethodEntry implements DefEntry { public MethodDefEntry updateOwnership(ClassEntry classEntry) { return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, signature, access); } + + public int getArgumentIndex(ClassDefEntry ownerEntry, int localVariableIndex) { + int argumentIndex = localVariableIndex; + + // Enum constructors have an implicit "name" and "ordinal" parameter as well as "this" + if (ownerEntry.getAccess().isEnum() && getName().startsWith("<")) { + argumentIndex -= 2; + } + + // If we're not static, "this" is bound to index 0 + if (!getAccess().isStatic()) { + argumentIndex -= 1; + } + + return argumentIndex; + } } -- cgit v1.2.3