summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar liach2019-01-11 02:12:46 -0800
committerGravatar Adrian Siekierka2019-01-11 11:12:46 +0100
commitd63d03b5e93eea27739072d657c619c9f7d27369 (patch)
treed53251d2b65819bdf7a70b871dfce702a8dde394 /src
parentTweak variable name generation (#86) (diff)
downloadenigma-d63d03b5e93eea27739072d657c619c9f7d27369.tar.gz
enigma-d63d03b5e93eea27739072d657c619c9f7d27369.tar.xz
enigma-d63d03b5e93eea27739072d657c619c9f7d27369.zip
Fix annotation npe for villager (#99)
Signed-off-by: liach <liach@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java
index df5f8f7e..2e5b54d9 100644
--- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java
+++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java
@@ -23,21 +23,29 @@ public class TranslationAnnotationVisitor extends AnnotationVisitor {
23 23
24 @Override 24 @Override
25 public AnnotationVisitor visitArray(String name) { 25 public AnnotationVisitor visitArray(String name) {
26 return this; 26 return new TranslationAnnotationVisitor(translator, annotationEntry, api, super.visitArray(name));
27 } 27 }
28 28
29 @Override 29 @Override
30 public AnnotationVisitor visitAnnotation(String name, String desc) { 30 public AnnotationVisitor visitAnnotation(String name, String desc) {
31 TypeDescriptor type = new TypeDescriptor(desc); 31 TypeDescriptor type = new TypeDescriptor(desc);
32 FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type)); 32 if (name != null) {
33 return super.visitAnnotation(annotationField.getName(), annotationField.getDesc().toString()); 33 FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type));
34 return super.visitAnnotation(annotationField.getName(), annotationField.getDesc().toString());
35 } else {
36 return super.visitAnnotation(null, translator.getTranslatedTypeDesc(type).toString());
37 }
34 } 38 }
35 39
36 @Override 40 @Override
37 public void visitEnum(String name, String desc, String value) { 41 public void visitEnum(String name, String desc, String value) {
38 TypeDescriptor type = new TypeDescriptor(desc); 42 TypeDescriptor type = new TypeDescriptor(desc);
39 FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type));
40 FieldEntry enumField = translator.getTranslatedField(new FieldEntry(type.getTypeEntry(), value, type)); 43 FieldEntry enumField = translator.getTranslatedField(new FieldEntry(type.getTypeEntry(), value, type));
41 super.visitEnum(annotationField.getName(), annotationField.getDesc().toString(), enumField.getName()); 44 if (name != null) {
45 FieldEntry annotationField = translator.getTranslatedField(new FieldEntry(annotationEntry, name, type));
46 super.visitEnum(annotationField.getName(), annotationField.getDesc().toString(), enumField.getName());
47 } else {
48 super.visitEnum(null, translator.getTranslatedTypeDesc(type).toString(), enumField.getName());
49 }
42 } 50 }
43} 51}