Refactor: extract AnnotationDescriptor.annotationClass utility

This commit is contained in:
Pavel V. Talanov
2017-04-28 18:41:48 +03:00
parent 7ef18fe5ba
commit 55a0e138fc
19 changed files with 55 additions and 33 deletions
@@ -20,14 +20,14 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationArgumentVisitor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.resolve.constants.*
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value
import org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type
import org.jetbrains.kotlin.types.ErrorUtils
class AnnotationSerializer(private val stringTable: StringTable) {
fun serializeAnnotation(annotation: AnnotationDescriptor): ProtoBuf.Annotation = ProtoBuf.Annotation.newBuilder().apply {
val annotationClass = annotation.type.constructor.declarationDescriptor as? ClassDescriptor
?: error("Annotation type is not a class: ${annotation.type}")
val annotationClass = annotation.annotationClass ?: error("Annotation type is not a class: ${annotation.type}")
if (ErrorUtils.isError(annotationClass)) {
error("Unresolved annotation type: ${annotation.type} at ${annotation.source.containingFile}")
}