Support annotations on class type parameters

#KT-43714
This commit is contained in:
Mikhael Bogdanov
2021-05-21 20:48:21 +02:00
parent 9091ca7b51
commit a8186d19d6
18 changed files with 222 additions and 57 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.serialization.deserialization.descriptors
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.SupertypeLoopChecker
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.descriptors.impl.AbstractLazyTypeParameterDescriptor
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.upperBounds
@@ -32,8 +33,11 @@ class DeserializedTypeParameterDescriptor(
val proto: ProtoBuf.TypeParameter,
index: Int
) : AbstractLazyTypeParameterDescriptor(
c.storageManager, c.containingDeclaration, c.nameResolver.getName(proto.name),
ProtoEnumFlags.variance(proto.variance), proto.reified, index, SourceElement.NO_SOURCE, SupertypeLoopChecker.EMPTY
c.storageManager, c.containingDeclaration,
/*TODO: support deserialized type annotations: now they are unused, even not accessible via reflection (KT-46932)*/
Annotations.EMPTY,
c.nameResolver.getName(proto.name),
ProtoEnumFlags.variance(proto.variance), proto.reified, index, SourceElement.NO_SOURCE, SupertypeLoopChecker.EMPTY,
) {
override val annotations = DeserializedAnnotations(c.storageManager) {
c.components.annotationAndConstantLoader.loadTypeParameterAnnotations(proto, c.nameResolver).toList()