Loading of annotation class arguments from compiled classes
This commit is contained in:
+11
@@ -113,6 +113,17 @@ public class BinaryClassAnnotationAndConstantLoaderImpl(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitAnnotation(name: Name, classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
||||
val list = ArrayList<AnnotationDescriptor>()
|
||||
val visitor = loadAnnotation(classId, list)!!
|
||||
return object: KotlinJvmBinaryClass.AnnotationArgumentVisitor by visitor {
|
||||
override fun visitEnd() {
|
||||
visitor.visitEnd()
|
||||
setArgumentValueByName(name, AnnotationValue(list.single()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: see analogous code in AnnotationDeserializer
|
||||
private fun enumEntryValue(enumClassId: ClassId, name: Name): CompileTimeConstant<*> {
|
||||
val enumClass = resolveClass(enumClassId)
|
||||
|
||||
+3
@@ -67,6 +67,9 @@ public interface KotlinJvmBinaryClass {
|
||||
|
||||
void visitEnum(@NotNull Name name, @NotNull ClassId enumClassId, @NotNull Name enumEntryName);
|
||||
|
||||
@Nullable
|
||||
AnnotationArgumentVisitor visitAnnotation(@NotNull Name name, @NotNull ClassId classId);
|
||||
|
||||
@Nullable
|
||||
AnnotationArrayArgumentVisitor visitArray(@NotNull Name name);
|
||||
|
||||
|
||||
+6
@@ -149,6 +149,12 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public AnnotationArgumentVisitor visitAnnotation(@NotNull Name name, @NotNull ClassId classId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private AnnotationArrayArgumentVisitor stringArrayVisitor() {
|
||||
final List<String> strings = new ArrayList<String>(1);
|
||||
|
||||
Reference in New Issue
Block a user