5
5
6
6
package kotlin.metadata.jvm.internal
7
7
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.*
13
8
import org.jetbrains.kotlin.metadata.ProtoBuf
14
9
import org.jetbrains.kotlin.metadata.deserialization.getExtensionOrNull
15
10
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
16
11
import 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.*
17
16
import kotlin.metadata.jvm.JvmMemberSignature
18
17
import kotlin.metadata.jvm.JvmMethodSignature
19
18
import kotlin.metadata.jvm.wrapAsPublic
@@ -22,6 +21,8 @@ internal class JvmMetadataExtensions : MetadataExtensions {
22
21
override fun readClassExtensions (kmClass : KmClass , proto : ProtoBuf .Class , c : ReadContext ) {
23
22
val ext = kmClass.jvm
24
23
24
+ proto.annotationList.mapTo(kmClass.annotations) { it.readAnnotation(c.strings) }
25
+
25
26
val anonymousObjectOriginName = proto.getExtensionOrNull(JvmProtoBuf .anonymousObjectOriginName)
26
27
if (anonymousObjectOriginName != null ) {
27
28
ext.anonymousObjectOriginName = c[anonymousObjectOriginName]
@@ -53,6 +54,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
53
54
54
55
override fun readFunctionExtensions (kmFunction : KmFunction , proto : ProtoBuf .Function , c : ReadContext ) {
55
56
val ext = kmFunction.jvm
57
+ proto.annotationList.mapTo(kmFunction.annotations) { it.readAnnotation(c.strings) }
56
58
ext.signature = JvmProtoBufUtil .getJvmMethodSignature(proto, c.strings, c.types)?.wrapAsPublic()
57
59
58
60
val lambdaClassOriginName = proto.getExtensionOrNull(JvmProtoBuf .lambdaClassOriginName)
@@ -63,6 +65,13 @@ internal class JvmMetadataExtensions : MetadataExtensions {
63
65
64
66
override fun readPropertyExtensions (kmProperty : KmProperty , proto : ProtoBuf .Property , c : ReadContext ) {
65
67
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
+
66
75
val fieldSignature = JvmProtoBufUtil .getJvmFieldSignature(proto, c.strings, c.types)
67
76
val propertySignature = proto.getExtensionOrNull(JvmProtoBuf .propertySignature)
68
77
val getterSignature =
@@ -85,6 +94,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
85
94
86
95
override fun readConstructorExtensions (kmConstructor : KmConstructor , proto : ProtoBuf .Constructor , c : ReadContext ) {
87
96
val ext = kmConstructor.jvm
97
+ proto.annotationList.mapTo(kmConstructor.annotations) { it.readAnnotation(c.strings) }
88
98
ext.signature = JvmProtoBufUtil .getJvmConstructorSignature(proto, c.strings, c.types)?.wrapAsPublic()
89
99
}
90
100
@@ -105,10 +115,13 @@ internal class JvmMetadataExtensions : MetadataExtensions {
105
115
106
116
override fun readTypeAliasExtensions (kmTypeAlias : KmTypeAlias , proto : ProtoBuf .TypeAlias , c : ReadContext ) {}
107
117
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
+ }
109
121
110
122
override fun writeClassExtensions (kmClass : KmClass , proto : ProtoBuf .Class .Builder , c : WriteContext ) =
111
123
with (kmClass.jvm) {
124
+ proto.addAllAnnotation(kmClass.annotations.map { it.writeAnnotation(c.strings).build() })
112
125
anonymousObjectOriginName?.let {
113
126
proto.setExtension(JvmProtoBuf .anonymousObjectOriginName, c[it])
114
127
}
@@ -145,6 +158,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
145
158
kmFunction : KmFunction , proto : ProtoBuf .Function .Builder , c : WriteContext ,
146
159
) {
147
160
with (kmFunction.jvm) {
161
+ proto.addAllAnnotation(kmFunction.annotations.map { it.writeAnnotation(c.strings).build() })
148
162
signature?.let { proto.setExtension(JvmProtoBuf .methodSignature, it.toJvmMethodSignature(c)) }
149
163
lambdaClassOriginName?.let { proto.setExtension(JvmProtoBuf .lambdaClassOriginName, c[it]) }
150
164
}
@@ -153,6 +167,12 @@ internal class JvmMetadataExtensions : MetadataExtensions {
153
167
override fun writePropertyExtensions (
154
168
kmProperty : KmProperty , proto : ProtoBuf .Property .Builder , c : WriteContext ,
155
169
) = 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
+
156
176
val composedSignature: JvmProtoBuf .JvmPropertySignature .Builder = JvmProtoBuf .JvmPropertySignature .newBuilder()
157
177
var hasSignature = false
158
178
@@ -188,6 +208,7 @@ internal class JvmMetadataExtensions : MetadataExtensions {
188
208
override fun writeConstructorExtensions (
189
209
kmConstructor : KmConstructor , proto : ProtoBuf .Constructor .Builder , c : WriteContext ,
190
210
): Unit = with (kmConstructor.jvm) {
211
+ proto.addAllAnnotation(kmConstructor.annotations.map { it.writeAnnotation(c.strings).build() })
191
212
signature?.let { proto.setExtension(JvmProtoBuf .constructorSignature, it.toJvmMethodSignature(c)) }
192
213
}
193
214
@@ -217,7 +238,9 @@ internal class JvmMetadataExtensions : MetadataExtensions {
217
238
valueParameter : KmValueParameter ,
218
239
proto : ProtoBuf .ValueParameter .Builder ,
219
240
c : WriteContext ,
220
- ) = Unit
241
+ ) {
242
+ proto.addAllAnnotation(valueParameter.annotations.map { it.writeAnnotation(c.strings).build() })
243
+ }
221
244
222
245
override fun createClassExtension (): KmClassExtension = JvmClassExtension ()
223
246
0 commit comments