diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt index 73cc4b41424..2402fd9a8c4 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt @@ -15,9 +15,7 @@ interface CirClass : CirClassifier, CirContainingClass { val isValue: Boolean val isInner: Boolean val isExternal: Boolean - val supertypes: Collection - - fun setSupertypes(supertypes: Collection) + var supertypes: List companion object { @Suppress("NOTHING_TO_INLINE") @@ -65,13 +63,12 @@ data class CirClassImpl( override val isInner: Boolean, override val isExternal: Boolean, ) : CirClass { - private var _supertypes: Collection? = null + private var _supertypes: List? = null - override val supertypes: Collection - get() = _supertypes.orEmpty() - - override fun setSupertypes(supertypes: Collection) { - check(_supertypes == null) - _supertypes = supertypes - } + override var supertypes: List + get() = _supertypes ?: error("${::supertypes.name} has not been initialized yet") + set(value) { + check(_supertypes == null) { "Re-initialization of ${::supertypes.name}" } + _supertypes = value + } } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/RecursionMarkers.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/RecursionMarkers.kt index 93150ec5e50..40cab536bff 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/RecursionMarkers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/RecursionMarkers.kt @@ -20,8 +20,9 @@ object CirClassRecursionMarker : CirClass, CirRecursionMarker { override val isValue get() = unsupported() override val isInner get() = unsupported() override val isExternal get() = unsupported() - override val supertypes get() = unsupported() - override fun setSupertypes(supertypes: Collection) = unsupported() + override var supertypes: List + get() = unsupported() + set(_) = unsupported() } object CirClassifierRecursionMarker : CirClassifier, CirRecursionMarker { diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/CommonizationVisitor.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/CommonizationVisitor.kt index c3c7db23ea3..dff79232415 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/CommonizationVisitor.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/CommonizationVisitor.kt @@ -147,6 +147,6 @@ internal class CommonizationVisitor( commonize(supertypesGroup, TypeCommonizer(classifiers)) }.orEmpty() - setSupertypes(commonSupertypes) + supertypes = commonSupertypes } } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirDeserializers.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirDeserializers.kt index d408c9cae90..d80a26340ee 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirDeserializers.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirDeserializers.kt @@ -264,7 +264,7 @@ object CirDeserializers { isInner = Flag.Class.IS_INNER(source.flags), isExternal = Flag.Class.IS_EXTERNAL(source.flags) ).apply { - setSupertypes(source.filteredSupertypes.compactMap { type(it, typeResolver) }) + supertypes = source.filteredSupertypes.compactMap { type(it, typeResolver) } } fun defaultEnumEntry( @@ -294,7 +294,7 @@ object CirDeserializers { arguments = emptyList(), isMarkedNullable = false ) - setSupertypes(listOf(enumClassType)) + supertypes = listOf(enumClassType) } @Suppress("NOTHING_TO_INLINE")