diff options
| author | 2019-01-11 02:12:46 -0800 | |
|---|---|---|
| committer | 2019-01-11 11:12:46 +0100 | |
| commit | d63d03b5e93eea27739072d657c619c9f7d27369 (patch) | |
| tree | d53251d2b65819bdf7a70b871dfce702a8dde394 /src | |
| parent | Tweak variable name generation (#86) (diff) | |
| download | enigma-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.java | 18 |
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 | } |