diff options
| author | 2018-06-21 18:43:42 +0200 | |
|---|---|---|
| committer | 2018-06-21 18:43:42 +0200 | |
| commit | dbd881184fb4955b3ecd027b35b57258fd9f3480 (patch) | |
| tree | 1a99671e8d23e063a5d90cb9ba8f1d3c91cf0f3c /src/main/java/cuchaz/enigma/bytecode | |
| parent | Fix anonymous class generation (diff) | |
| download | enigma-fork-dbd881184fb4955b3ecd027b35b57258fd9f3480.tar.gz enigma-fork-dbd881184fb4955b3ecd027b35b57258fd9f3480.tar.xz enigma-fork-dbd881184fb4955b3ecd027b35b57258fd9f3480.zip | |
Fix issues with inner class signature transformation
Diffstat (limited to 'src/main/java/cuchaz/enigma/bytecode')
| -rw-r--r-- | src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java index 2bb80a8..928c6d1 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java +++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java | |||
| @@ -3,14 +3,12 @@ package cuchaz.enigma.bytecode.translators; | |||
| 3 | import org.objectweb.asm.Opcodes; | 3 | import org.objectweb.asm.Opcodes; |
| 4 | import org.objectweb.asm.signature.SignatureVisitor; | 4 | import org.objectweb.asm.signature.SignatureVisitor; |
| 5 | 5 | ||
| 6 | import java.util.Stack; | ||
| 7 | import java.util.function.Function; | 6 | import java.util.function.Function; |
| 8 | 7 | ||
| 9 | public class TranslationSignatureVisitor extends SignatureVisitor { | 8 | public class TranslationSignatureVisitor extends SignatureVisitor { |
| 10 | private final Function<String, String> remapper; | 9 | private final Function<String, String> remapper; |
| 11 | 10 | ||
| 12 | private final SignatureVisitor sv; | 11 | private final SignatureVisitor sv; |
| 13 | private final Stack<String> classes = new Stack<>(); | ||
| 14 | 12 | ||
| 15 | public TranslationSignatureVisitor(Function<String, String> remapper, SignatureVisitor sv) { | 13 | public TranslationSignatureVisitor(Function<String, String> remapper, SignatureVisitor sv) { |
| 16 | super(Opcodes.ASM5); | 14 | super(Opcodes.ASM5); |
| @@ -21,17 +19,13 @@ public class TranslationSignatureVisitor extends SignatureVisitor { | |||
| 21 | @Override | 19 | @Override |
| 22 | public void visitClassType(String name) { | 20 | public void visitClassType(String name) { |
| 23 | String translatedEntry = this.remapper.apply(name); | 21 | String translatedEntry = this.remapper.apply(name); |
| 24 | this.classes.push(name); | ||
| 25 | this.sv.visitClassType(translatedEntry); | 22 | this.sv.visitClassType(translatedEntry); |
| 26 | } | 23 | } |
| 27 | 24 | ||
| 28 | @Override | 25 | @Override |
| 29 | public void visitInnerClassType(String name) { | 26 | public void visitInnerClassType(String name) { |
| 30 | String outerName = this.classes.pop(); | 27 | String translatedEntry = this.remapper.apply(name); |
| 31 | String className = outerName + "$" + name; | 28 | this.sv.visitInnerClassType(translatedEntry); |
| 32 | this.classes.push(className); | ||
| 33 | String translatedEntry = this.remapper.apply(className); | ||
| 34 | this.sv.visitInnerClassType(translatedEntry.substring(translatedEntry.lastIndexOf('$') + 1)); | ||
| 35 | } | 29 | } |
| 36 | 30 | ||
| 37 | @Override | 31 | @Override |
| @@ -111,7 +105,6 @@ public class TranslationSignatureVisitor extends SignatureVisitor { | |||
| 111 | @Override | 105 | @Override |
| 112 | public void visitEnd() { | 106 | public void visitEnd() { |
| 113 | this.sv.visitEnd(); | 107 | this.sv.visitEnd(); |
| 114 | this.classes.pop(); | ||
| 115 | } | 108 | } |
| 116 | 109 | ||
| 117 | @Override | 110 | @Override |