6
6
package org.jetbrains.kotlin.commonizer.metadata
7
7
8
8
import kotlinx.metadata.klib.*
9
- import kotlinx.metadata.klib.annotations
10
- import kotlinx.metadata.klib.compileTimeValue
11
9
import org.jetbrains.kotlin.commonizer.cir.*
12
10
import org.jetbrains.kotlin.commonizer.utils.*
13
11
import org.jetbrains.kotlin.descriptors.*
12
+ import org.jetbrains.kotlin.descriptors.ClassKind
13
+ import org.jetbrains.kotlin.descriptors.Modality
14
+ import org.jetbrains.kotlin.descriptors.Visibility
14
15
import org.jetbrains.kotlin.types.Variance
15
16
import kotlin.metadata.*
16
17
import kotlin.metadata.ClassKind as KmClassKind
17
18
import kotlin.metadata.Modality as KmModality
18
19
import kotlin.metadata.Visibility as KmVisibility
19
20
20
21
object CirDeserializers {
21
- private fun annotations (
22
- hasAnnotations : Boolean ,
23
- typeResolver : CirTypeResolver ,
24
- annotations : () -> List <KmAnnotation >,
25
- ): List <CirAnnotation > {
26
- return if (! hasAnnotations)
27
- emptyList()
28
- else
29
- annotations().compactMap { annotation(it, typeResolver) }
30
- }
22
+ private fun annotations (annotations : List <KmAnnotation >, typeResolver : CirTypeResolver ): List <CirAnnotation > =
23
+ annotations.compactMap { annotation(it, typeResolver) }
31
24
32
25
private fun annotation (source : KmAnnotation , typeResolver : CirTypeResolver ): CirAnnotation {
33
26
val classId = CirEntityId .create(source.className)
@@ -75,7 +68,7 @@ object CirDeserializers {
75
68
}
76
69
77
70
private fun typeParameter (source : KmTypeParameter , typeResolver : CirTypeResolver ): CirTypeParameter = CirTypeParameter (
78
- annotations = annotations(true , typeResolver, source::annotations ),
71
+ annotations = annotations(source.annotations , typeResolver),
79
72
name = CirName .create(source.name),
80
73
isReified = source.isReified,
81
74
variance = variance(source.variance),
@@ -99,7 +92,7 @@ object CirDeserializers {
99
92
} else CirConstantValue .NullValue
100
93
101
94
return CirProperty (
102
- annotations = annotations(source.hasAnnotations , typeResolver, source::klibAnnotations ),
95
+ annotations = annotations(source.klibAnnotations , typeResolver),
103
96
name = name,
104
97
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
105
98
visibility = visibility(source.visibility),
@@ -122,7 +115,7 @@ object CirDeserializers {
122
115
123
116
private fun propertyGetter (source : KmProperty , typeResolver : CirTypeResolver ): CirPropertyGetter ? {
124
117
val isDefault = ! source.getter.isNotDefault
125
- val annotations = annotations(source.getter.hasAnnotations , typeResolver, source::klibGetterAnnotations )
118
+ val annotations = annotations(source.klibGetterAnnotations , typeResolver)
126
119
127
120
if (isDefault && annotations.isEmpty())
128
121
return CirPropertyGetter .DEFAULT_NO_ANNOTATIONS
@@ -138,10 +131,8 @@ object CirDeserializers {
138
131
val setter = source.setter ? : return null
139
132
140
133
return CirPropertySetter .createInterned(
141
- annotations = annotations(source.setter?.hasAnnotations == true , typeResolver, source::klibSetterAnnotations),
142
- parameterAnnotations = source.setterParameter?.let { setterParameter ->
143
- annotations(setterParameter.hasAnnotations, typeResolver, setterParameter::klibAnnotations)
144
- }.orEmpty(),
134
+ annotations = annotations(source.klibSetterAnnotations, typeResolver),
135
+ parameterAnnotations = source.setterParameter?.let { annotations(it.klibAnnotations, typeResolver) }.orEmpty(),
145
136
visibility = visibility(setter.visibility),
146
137
isDefault = ! setter.isNotDefault,
147
138
isInline = setter.isInline
@@ -159,7 +150,7 @@ object CirDeserializers {
159
150
160
151
fun function (name : CirName , source : KmFunction , containingClass : CirContainingClass ? , typeResolver : CirTypeResolver ): CirFunction =
161
152
CirFunction (
162
- annotations = annotations(source.hasAnnotations , typeResolver, source::klibAnnotations ),
153
+ annotations = annotations(source.klibAnnotations , typeResolver),
163
154
name = name,
164
155
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
165
156
visibility = visibility(source.visibility),
@@ -182,7 +173,7 @@ object CirDeserializers {
182
173
183
174
private fun valueParameter (source : KmValueParameter , typeResolver : CirTypeResolver ): CirValueParameter =
184
175
CirValueParameter .createInterned(
185
- annotations = annotations(source.hasAnnotations , typeResolver, source::klibAnnotations ),
176
+ annotations = annotations(source.klibAnnotations , typeResolver),
186
177
name = CirName .create(source.name),
187
178
returnType = type(source.type, typeResolver),
188
179
varargElementType = source.varargElementType?.let { type(it, typeResolver) },
@@ -242,7 +233,7 @@ object CirDeserializers {
242
233
}
243
234
244
235
fun clazz (name : CirName , source : KmClass , typeResolver : CirTypeResolver ): CirClass = CirClass .create(
245
- annotations = annotations(source.hasAnnotations , typeResolver, source::klibAnnotations ),
236
+ annotations = annotations(source.klibAnnotations , typeResolver),
246
237
name = name,
247
238
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
248
239
supertypes = source.filteredSupertypes.compactMap { type(it, typeResolver) },
@@ -299,7 +290,7 @@ object CirDeserializers {
299
290
300
291
fun constructor (source : KmConstructor , containingClass : CirContainingClass , typeResolver : CirTypeResolver ): CirClassConstructor =
301
292
CirClassConstructor .create(
302
- annotations = annotations(source.hasAnnotations , typeResolver, source::klibAnnotations ),
293
+ annotations = annotations(source.klibAnnotations , typeResolver),
303
294
typeParameters = emptyList(), // TODO: nowhere to read constructor type parameters from
304
295
visibility = visibility(source.visibility),
305
296
containingClass = containingClass,
@@ -313,7 +304,7 @@ object CirDeserializers {
313
304
val expandedType = underlyingType.unabbreviate()
314
305
315
306
return CirTypeAlias .create(
316
- annotations = annotations(source.hasAnnotations , typeResolver, source::annotations ),
307
+ annotations = annotations(source.annotations , typeResolver),
317
308
name = name,
318
309
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
319
310
visibility = visibility(source.visibility),
@@ -410,4 +401,3 @@ object CirDeserializers {
410
401
else -> error(" Can't decode visibility $kmVisibility " )
411
402
}
412
403
}
413
-
0 commit comments