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 69fac2e3e63..366833e705b 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 @@ -128,7 +128,7 @@ internal class CommonizationVisitor( val supertypesMap: MutableMap> = linkedMapOf() // preserve supertype order for ((index, typeAlias) in targetDeclarations.withIndex()) { val expandedClassId = typeAlias!!.expandedType.classifierId - if (classifiers.commonDependeeLibraries?.hasClassifier(expandedClassId) == true) + if (classifiers.commonDependeeLibraries.hasClassifier(expandedClassId)) return null // this case is not supported yet val expandedClassNode = classifiers.commonized.classNode(expandedClassId) ?: return null diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt index 00d9beee173..e17566f0886 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt @@ -76,7 +76,7 @@ private class TypeAliasShortCircuitingCommonizer( private tailrec fun computeCommonizedUnderlyingType(underlyingType: CirClassOrTypeAliasType): CirClassOrTypeAliasType { return when (underlyingType) { is CirClassType -> underlyingType - is CirTypeAliasType -> if (classifiers.commonDependeeLibraries?.hasClassifier(underlyingType.classifierId) == true) + is CirTypeAliasType -> if (classifiers.commonDependeeLibraries.hasClassifier(underlyingType.classifierId)) underlyingType else computeCommonizedUnderlyingType(underlyingType.underlyingType) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt index b0e0d909ed4..9c3d1a70c48 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt @@ -220,7 +220,7 @@ private class TypeArgumentListCommonizer(classifiers: CirKnownClassifiers) : Abs ) private fun commonizeClass(classId: ClassId, classifiers: CirKnownClassifiers): Boolean { - if (classifiers.commonDependeeLibraries?.hasClassifier(classId) == true) { + if (classifiers.commonDependeeLibraries.hasClassifier(classId)) { // The class is from common fragment of dependee library (ex: stdlib). Already commonized. return true } else if (classId.packageFqName.isUnderKotlinNativeSyntheticPackages) { @@ -247,7 +247,7 @@ private fun commonizeClass(classId: ClassId, classifiers: CirKnownClassifiers): } private fun commonizeTypeAlias(typeAliasId: ClassId, classifiers: CirKnownClassifiers): CommonizedTypeAliasAnswer { - if (classifiers.commonDependeeLibraries?.hasClassifier(typeAliasId) == true) { + if (classifiers.commonDependeeLibraries.hasClassifier(typeAliasId)) { // The type alias is from common fragment of dependee library (ex: stdlib). Already commonized. return SUCCESS_FROM_DEPENDEE_LIBRARY } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassifiersCache.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassifiersCache.kt index bc5175d92c0..f9ced646b45 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassifiersCache.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassifiersCache.kt @@ -25,7 +25,8 @@ class CirKnownClassifiers( val dependeeLibraries: Map ) { // a shortcut for fast access - val commonDependeeLibraries: CirProvidedClassifiers? = dependeeLibraries.filterKeys { it is SharedTarget }.values.singleOrNull() + val commonDependeeLibraries: CirProvidedClassifiers = + dependeeLibraries.filterKeys { it is SharedTarget }.values.singleOrNull() ?: CirProvidedClassifiers.EMPTY } interface CirCommonizedClassifiers { @@ -86,6 +87,10 @@ interface CirProvidedClassifiers { //fun classifier(classifierId: ClassId): Any? companion object { + internal val EMPTY = object : CirProvidedClassifiers { + override fun hasClassifier(classifierId: ClassId) = false + } + // N.B. This is suboptimal implementation. It will be replaced by another implementation that will // retrieve classifier information directly from the metadata. fun fromModules(storageManager: StorageManager, modules: () -> Collection) = object : CirProvidedClassifiers {