diff options
| author | 2018-06-24 21:59:13 +0200 | |
|---|---|---|
| committer | 2018-06-24 21:59:13 +0200 | |
| commit | a93e108682c480285a72c3566f6e671d324e5072 (patch) | |
| tree | 11f799576e8e444cd261f897b45e16f77890aee8 /src/main/java/cuchaz/enigma/mapping | |
| parent | Fix enum parameter index offset (diff) | |
| download | enigma-fork-a93e108682c480285a72c3566f6e671d324e5072.tar.gz enigma-fork-a93e108682c480285a72c3566f6e671d324e5072.tar.xz enigma-fork-a93e108682c480285a72c3566f6e671d324e5072.zip | |
Fix parsed local variable indexing
Diffstat (limited to 'src/main/java/cuchaz/enigma/mapping')
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java | 10 |
1 files changed, 10 insertions, 0 deletions
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 { | |||
| 37 | return signature; | 37 | return signature; |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | public int getVariableOffset(ClassDefEntry ownerEntry) { | ||
| 41 | // Enum constructors have an implicit "name" and "ordinal" parameter as well as "this" | ||
| 42 | if (ownerEntry.getAccess().isEnum() && getName().startsWith("<")) { | ||
| 43 | return 3; | ||
| 44 | } else { | ||
| 45 | // If we're not static, "this" is bound to index 0 | ||
| 46 | return getAccess().isStatic() ? 0 : 1; | ||
| 47 | } | ||
| 48 | } | ||
| 49 | |||
| 40 | @Override | 50 | @Override |
| 41 | public MethodDefEntry updateOwnership(ClassEntry classEntry) { | 51 | public MethodDefEntry updateOwnership(ClassEntry classEntry) { |
| 42 | return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, signature, access); | 52 | return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, signature, access); |