[klib] Fix serialization of missing annotations

^KT-42490
^KT-44625
This commit is contained in:
Pavel Kunyavskiy
2022-12-12 17:27:41 +01:00
committed by Space Team
parent 90d702ed27
commit 17e9a6a781
21 changed files with 526 additions and 106 deletions
@@ -62,6 +62,11 @@ abstract class KotlinSerializerExtensionBase(private val protocol: SerializerExt
for (annotation in descriptor.nonSourceAnnotations) {
proto.addExtensionOrNull(protocol.functionAnnotation, annotationSerializer.serializeAnnotation(annotation))
}
protocol.functionExtensionReceiverAnnotation?.let { extension ->
for (annotation in descriptor.extensionReceiverParameter?.nonSourceAnnotations.orEmpty()) {
proto.addExtensionOrNull(extension, annotationSerializer.serializeAnnotation(annotation))
}
}
}
override fun serializeProperty(
@@ -79,6 +84,21 @@ abstract class KotlinSerializerExtensionBase(private val protocol: SerializerExt
for (annotation in descriptor.setter?.nonSourceAnnotations.orEmpty()) {
proto.addExtensionOrNull(protocol.propertySetterAnnotation, annotationSerializer.serializeAnnotation(annotation))
}
protocol.propertyExtensionReceiverAnnotation?.let { extension ->
for (annotation in descriptor.extensionReceiverParameter?.nonSourceAnnotations.orEmpty()) {
proto.addExtensionOrNull(extension, annotationSerializer.serializeAnnotation(annotation))
}
}
protocol.propertyBackingFieldAnnotation?.let { extension ->
for (annotation in descriptor.backingField?.nonSourceAnnotations.orEmpty()) {
proto.addExtensionOrNull(extension, annotationSerializer.serializeAnnotation(annotation))
}
}
protocol.propertyDelegatedFieldAnnotation?.let { extension ->
for (annotation in descriptor.delegateField?.nonSourceAnnotations.orEmpty()) {
proto.addExtensionOrNull(extension, annotationSerializer.serializeAnnotation(annotation))
}
}
val constantInitializer = descriptor.compileTimeInitializer ?: return
if (constantInitializer !is NullValue) {
proto.setExtension(protocol.compileTimeValue, annotationSerializer.valueProto(constantInitializer).build())