55
66package kotlin.metadata.jvm.internal
77
8- import kotlin.metadata.*
9- import kotlin.metadata.internal.*
10- import kotlin.metadata.internal.common.*
11- import kotlin.metadata.internal.extensions.*
12- import kotlin.metadata.jvm.*
138import org.jetbrains.kotlin.metadata.ProtoBuf
149import org.jetbrains.kotlin.metadata.deserialization.getExtensionOrNull
1510import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
1611import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
12+ import kotlin.metadata.*
13+ import kotlin.metadata.internal.*
14+ import kotlin.metadata.internal.common.KmModuleFragment
15+ import kotlin.metadata.internal.extensions.*
1716import kotlin.metadata.jvm.JvmMemberSignature
1817import kotlin.metadata.jvm.JvmMethodSignature
1918import kotlin.metadata.jvm.wrapAsPublic
@@ -22,6 +21,8 @@ internal class JvmMetadataExtensions : MetadataExtensions {
2221 override fun readClassExtensions (kmClass : KmClass , proto : ProtoBuf .Class , c : ReadContext ) {
2322 val ext = kmClass.jvm
2423
24+ proto.annotationList.mapTo(kmClass.annotations) { it.readAnnotation(c.strings) }
25+
2526 val anonymousObjectOriginName = proto.getExtensionOrNull(JvmProtoBuf .anonymousObjectOriginName)
2627 if (anonymousObjectOriginName != null ) {
2728 ext.anonymousObjectOriginName = c[anonymousObjectOriginName]
@@ -53,6 +54,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
5354
5455 override fun readFunctionExtensions (kmFunction : KmFunction , proto : ProtoBuf .Function , c : ReadContext ) {
5556 val ext = kmFunction.jvm
57+ proto.annotationList.mapTo(kmFunction.annotations) { it.readAnnotation(c.strings) }
5658 ext.signature = JvmProtoBufUtil .getJvmMethodSignature(proto, c.strings, c.types)?.wrapAsPublic()
5759
5860 val lambdaClassOriginName = proto.getExtensionOrNull(JvmProtoBuf .lambdaClassOriginName)
@@ -63,6 +65,13 @@ internal class JvmMetadataExtensions : MetadataExtensions {
6365
6466 override fun readPropertyExtensions (kmProperty : KmProperty , proto : ProtoBuf .Property , c : ReadContext ) {
6567 val ext = kmProperty.jvm
68+
69+ proto.annotationList.mapTo(kmProperty.annotations) { it.readAnnotation(c.strings) }
70+ proto.getterAnnotationList.mapTo(kmProperty.getter.annotations) { it.readAnnotation(c.strings) }
71+ kmProperty.setter?.let { setter ->
72+ proto.setterAnnotationList.mapTo(setter.annotations) { it.readAnnotation(c.strings) }
73+ }
74+
6675 val fieldSignature = JvmProtoBufUtil .getJvmFieldSignature(proto, c.strings, c.types)
6776 val propertySignature = proto.getExtensionOrNull(JvmProtoBuf .propertySignature)
6877 val getterSignature =
@@ -85,6 +94,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
8594
8695 override fun readConstructorExtensions (kmConstructor : KmConstructor , proto : ProtoBuf .Constructor , c : ReadContext ) {
8796 val ext = kmConstructor.jvm
97+ proto.annotationList.mapTo(kmConstructor.annotations) { it.readAnnotation(c.strings) }
8898 ext.signature = JvmProtoBufUtil .getJvmConstructorSignature(proto, c.strings, c.types)?.wrapAsPublic()
8999 }
90100
@@ -105,10 +115,13 @@ internal class JvmMetadataExtensions : MetadataExtensions {
105115
106116 override fun readTypeAliasExtensions (kmTypeAlias : KmTypeAlias , proto : ProtoBuf .TypeAlias , c : ReadContext ) {}
107117
108- override fun readValueParameterExtensions (kmValueParameter : KmValueParameter , proto : ProtoBuf .ValueParameter , c : ReadContext ) {}
118+ override fun readValueParameterExtensions (kmValueParameter : KmValueParameter , proto : ProtoBuf .ValueParameter , c : ReadContext ) {
119+ proto.annotationList.mapTo(kmValueParameter.annotations) { it.readAnnotation(c.strings) }
120+ }
109121
110122 override fun writeClassExtensions (kmClass : KmClass , proto : ProtoBuf .Class .Builder , c : WriteContext ) =
111123 with (kmClass.jvm) {
124+ proto.addAllAnnotation(kmClass.annotations.map { it.writeAnnotation(c.strings).build() })
112125 anonymousObjectOriginName?.let {
113126 proto.setExtension(JvmProtoBuf .anonymousObjectOriginName, c[it])
114127 }
@@ -145,6 +158,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
145158 kmFunction : KmFunction , proto : ProtoBuf .Function .Builder , c : WriteContext ,
146159 ) {
147160 with (kmFunction.jvm) {
161+ proto.addAllAnnotation(kmFunction.annotations.map { it.writeAnnotation(c.strings).build() })
148162 signature?.let { proto.setExtension(JvmProtoBuf .methodSignature, it.toJvmMethodSignature(c)) }
149163 lambdaClassOriginName?.let { proto.setExtension(JvmProtoBuf .lambdaClassOriginName, c[it]) }
150164 }
@@ -153,6 +167,12 @@ internal class JvmMetadataExtensions : MetadataExtensions {
153167 override fun writePropertyExtensions (
154168 kmProperty : KmProperty , proto : ProtoBuf .Property .Builder , c : WriteContext ,
155169 ) = with (kmProperty.jvm) {
170+ proto.addAllAnnotation(kmProperty.annotations.map { it.writeAnnotation(c.strings).build() })
171+ proto.addAllGetterAnnotation(kmProperty.getter.annotations.map { it.writeAnnotation(c.strings).build() })
172+ kmProperty.setter?.let { setter ->
173+ proto.addAllSetterAnnotation(setter.annotations.map { it.writeAnnotation(c.strings).build() })
174+ }
175+
156176 val composedSignature: JvmProtoBuf .JvmPropertySignature .Builder = JvmProtoBuf .JvmPropertySignature .newBuilder()
157177 var hasSignature = false
158178
@@ -188,6 +208,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
188208 override fun writeConstructorExtensions (
189209 kmConstructor : KmConstructor , proto : ProtoBuf .Constructor .Builder , c : WriteContext ,
190210 ): Unit = with (kmConstructor.jvm) {
211+ proto.addAllAnnotation(kmConstructor.annotations.map { it.writeAnnotation(c.strings).build() })
191212 signature?.let { proto.setExtension(JvmProtoBuf .constructorSignature, it.toJvmMethodSignature(c)) }
192213 }
193214
@@ -217,7 +238,9 @@ internal class JvmMetadataExtensions : MetadataExtensions {
217238 valueParameter : KmValueParameter ,
218239 proto : ProtoBuf .ValueParameter .Builder ,
219240 c : WriteContext ,
220- ) = Unit
241+ ) {
242+ proto.addAllAnnotation(valueParameter.annotations.map { it.writeAnnotation(c.strings).build() })
243+ }
221244
222245 override fun createClassExtension (): KmClassExtension = JvmClassExtension ()
223246
0 commit comments