From a93e108682c480285a72c3566f6e671d324e5072 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 24 Jun 2018 21:59:13 +0200 Subject: Fix parsed local variable indexing --- src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/main/java/cuchaz/enigma/mapping') diff --git a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java index ec3af69..bb7c85e 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java @@ -37,6 +37,16 @@ public class MethodDefEntry extends MethodEntry { return signature; } + public int getVariableOffset(ClassDefEntry ownerEntry) { + // Enum constructors have an implicit "name" and "ordinal" parameter as well as "this" + if (ownerEntry.getAccess().isEnum() && getName().startsWith("<")) { + return 3; + } else { + // If we're not static, "this" is bound to index 0 + return getAccess().isStatic() ? 0 : 1; + } + } + @Override public MethodDefEntry updateOwnership(ClassEntry classEntry) { return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, signature, access); -- cgit v1.2.3