[Commonizer] Minor. Reorganize CirClass.supertypes

This commit is contained in:
Dmitriy Dolovov
2021-03-12 21:20:18 +03:00
parent cdb2dd6661
commit ed98d878df
4 changed files with 14 additions and 16 deletions
@@ -15,9 +15,7 @@ interface CirClass : CirClassifier, CirContainingClass {
val isValue: Boolean
val isInner: Boolean
val isExternal: Boolean
val supertypes: Collection<CirType>
fun setSupertypes(supertypes: Collection<CirType>)
var supertypes: List<CirType>
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<CirType>? = null
private var _supertypes: List<CirType>? = null
override val supertypes: Collection<CirType>
get() = _supertypes.orEmpty()
override fun setSupertypes(supertypes: Collection<CirType>) {
check(_supertypes == null)
_supertypes = supertypes
}
override var supertypes: List<CirType>
get() = _supertypes ?: error("${::supertypes.name} has not been initialized yet")
set(value) {
check(_supertypes == null) { "Re-initialization of ${::supertypes.name}" }
_supertypes = value
}
}
@@ -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<CirType>) = unsupported()
override var supertypes: List<CirType>
get() = unsupported()
set(_) = unsupported()
}
object CirClassifierRecursionMarker : CirClassifier, CirRecursionMarker {
@@ -147,6 +147,6 @@ internal class CommonizationVisitor(
commonize(supertypesGroup, TypeCommonizer(classifiers))
}.orEmpty()
setSupertypes(commonSupertypes)
supertypes = commonSupertypes
}
}
@@ -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")