Skip to content

Commit 3e9cf44

Browse files
udalovSpace Team
authored andcommitted
Commonizer: do not use hasAnnotations on Km declarations
#KT-75290
1 parent 6214cee commit 3e9cf44

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,21 @@
66
package org.jetbrains.kotlin.commonizer.metadata
77

88
import kotlinx.metadata.klib.*
9-
import kotlinx.metadata.klib.annotations
10-
import kotlinx.metadata.klib.compileTimeValue
119
import org.jetbrains.kotlin.commonizer.cir.*
1210
import org.jetbrains.kotlin.commonizer.utils.*
1311
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
1415
import org.jetbrains.kotlin.types.Variance
1516
import kotlin.metadata.*
1617
import kotlin.metadata.ClassKind as KmClassKind
1718
import kotlin.metadata.Modality as KmModality
1819
import kotlin.metadata.Visibility as KmVisibility
1920

2021
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) }
3124

3225
private fun annotation(source: KmAnnotation, typeResolver: CirTypeResolver): CirAnnotation {
3326
val classId = CirEntityId.create(source.className)
@@ -75,7 +68,7 @@ object CirDeserializers {
7568
}
7669

7770
private fun typeParameter(source: KmTypeParameter, typeResolver: CirTypeResolver): CirTypeParameter = CirTypeParameter(
78-
annotations = annotations(true, typeResolver, source::annotations),
71+
annotations = annotations(source.annotations, typeResolver),
7972
name = CirName.create(source.name),
8073
isReified = source.isReified,
8174
variance = variance(source.variance),
@@ -99,7 +92,7 @@ object CirDeserializers {
9992
} else CirConstantValue.NullValue
10093

10194
return CirProperty(
102-
annotations = annotations(source.hasAnnotations, typeResolver, source::klibAnnotations),
95+
annotations = annotations(source.klibAnnotations, typeResolver),
10396
name = name,
10497
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
10598
visibility = visibility(source.visibility),
@@ -122,7 +115,7 @@ object CirDeserializers {
122115

123116
private fun propertyGetter(source: KmProperty, typeResolver: CirTypeResolver): CirPropertyGetter? {
124117
val isDefault = !source.getter.isNotDefault
125-
val annotations = annotations(source.getter.hasAnnotations, typeResolver, source::klibGetterAnnotations)
118+
val annotations = annotations(source.klibGetterAnnotations, typeResolver)
126119

127120
if (isDefault && annotations.isEmpty())
128121
return CirPropertyGetter.DEFAULT_NO_ANNOTATIONS
@@ -138,10 +131,8 @@ object CirDeserializers {
138131
val setter = source.setter ?: return null
139132

140133
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(),
145136
visibility = visibility(setter.visibility),
146137
isDefault = !setter.isNotDefault,
147138
isInline = setter.isInline
@@ -159,7 +150,7 @@ object CirDeserializers {
159150

160151
fun function(name: CirName, source: KmFunction, containingClass: CirContainingClass?, typeResolver: CirTypeResolver): CirFunction =
161152
CirFunction(
162-
annotations = annotations(source.hasAnnotations, typeResolver, source::klibAnnotations),
153+
annotations = annotations(source.klibAnnotations, typeResolver),
163154
name = name,
164155
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
165156
visibility = visibility(source.visibility),
@@ -182,7 +173,7 @@ object CirDeserializers {
182173

183174
private fun valueParameter(source: KmValueParameter, typeResolver: CirTypeResolver): CirValueParameter =
184175
CirValueParameter.createInterned(
185-
annotations = annotations(source.hasAnnotations, typeResolver, source::klibAnnotations),
176+
annotations = annotations(source.klibAnnotations, typeResolver),
186177
name = CirName.create(source.name),
187178
returnType = type(source.type, typeResolver),
188179
varargElementType = source.varargElementType?.let { type(it, typeResolver) },
@@ -242,7 +233,7 @@ object CirDeserializers {
242233
}
243234

244235
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),
246237
name = name,
247238
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
248239
supertypes = source.filteredSupertypes.compactMap { type(it, typeResolver) },
@@ -299,7 +290,7 @@ object CirDeserializers {
299290

300291
fun constructor(source: KmConstructor, containingClass: CirContainingClass, typeResolver: CirTypeResolver): CirClassConstructor =
301292
CirClassConstructor.create(
302-
annotations = annotations(source.hasAnnotations, typeResolver, source::klibAnnotations),
293+
annotations = annotations(source.klibAnnotations, typeResolver),
303294
typeParameters = emptyList(), // TODO: nowhere to read constructor type parameters from
304295
visibility = visibility(source.visibility),
305296
containingClass = containingClass,
@@ -313,7 +304,7 @@ object CirDeserializers {
313304
val expandedType = underlyingType.unabbreviate()
314305

315306
return CirTypeAlias.create(
316-
annotations = annotations(source.hasAnnotations, typeResolver, source::annotations),
307+
annotations = annotations(source.annotations, typeResolver),
317308
name = name,
318309
typeParameters = source.typeParameters.compactMap { typeParameter(it, typeResolver) },
319310
visibility = visibility(source.visibility),
@@ -410,4 +401,3 @@ object CirDeserializers {
410401
else -> error("Can't decode visibility $kmVisibility")
411402
}
412403
}
413-

0 commit comments

Comments
 (0)