diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetProvider.kt index 8e7bcab23ec..681fd71f5b2 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetProvider.kt @@ -27,9 +27,9 @@ interface ModulesProvider { /** * Returns information about all modules that can be loaded by this [ModulesProvider] in the form of [ModuleInfo]s. - * This function is relatively light-weight and does not have significant impact on performance. + * The module infos are expected to be already loaded. Access should be lightweight */ - fun loadModuleInfos(): Collection + val moduleInfos: Collection /** * Loads metadata for the specified module. diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/commonModuleNames.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/commonModuleNames.kt index 4d341c3fafa..64728970817 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/commonModuleNames.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/commonModuleNames.kt @@ -13,7 +13,7 @@ internal fun CommonizerParameters.commonModuleNames(target: CommonizerTarget): S if (supportedTargets.isEmpty()) return emptySet() // Nothing to do val allModuleNames: List> = supportedTargets.toList().map { targetProvider -> - targetProvider.modulesProvider.loadModuleInfos().mapTo(HashSet()) { it.name } + targetProvider.modulesProvider.moduleInfos.mapTo(HashSet()) { it.name } } return allModuleNames.reduce { a, b -> a intersect b } // there are modules that are present in every target diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/DefaultModulesProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/DefaultModulesProvider.kt index 744f13f0bee..829030bf1c7 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/DefaultModulesProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/DefaultModulesProvider.kt @@ -46,7 +46,7 @@ internal class DefaultModulesProvider(libraries: Collection) : Mo this.moduleInfoMap = moduleInfoMap } - override fun loadModuleInfos(): Collection = moduleInfoMap.values + override val moduleInfos: Collection get() = moduleInfoMap.values override fun loadModuleMetadata(name: String): SerializedMetadata { val library = libraryMap[name]?.library ?: error("No such library: $name") diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt index 7ee572fdbf5..b56610f5e08 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt @@ -45,7 +45,7 @@ internal class CirProvidedClassifiersByModules private constructor( val classifiers = THashMap() var hasForwardDeclarations = false - modulesProvider.loadModuleInfos().forEach { moduleInfo -> + modulesProvider.moduleInfos.forEach { moduleInfo -> moduleInfo.cInteropAttributes?.let { cInteropAttributes -> // this is a C-interop module hasForwardDeclarations = true diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/tree/deserializer/RootCirTreeDeserializer.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/tree/deserializer/RootCirTreeDeserializer.kt index cb827788be5..933e6175d70 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/tree/deserializer/RootCirTreeDeserializer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/tree/deserializer/RootCirTreeDeserializer.kt @@ -5,7 +5,10 @@ package org.jetbrains.kotlin.commonizer.tree.deserializer -import org.jetbrains.kotlin.commonizer.* +import org.jetbrains.kotlin.commonizer.CommonizerParameters +import org.jetbrains.kotlin.commonizer.TargetProvider +import org.jetbrains.kotlin.commonizer.commonModuleNames +import org.jetbrains.kotlin.commonizer.dependencyClassifiers import org.jetbrains.kotlin.commonizer.mergedtree.CirProvidedClassifiers import org.jetbrains.kotlin.commonizer.metadata.CirTypeResolver import org.jetbrains.kotlin.commonizer.tree.CirTreeRoot @@ -17,7 +20,7 @@ internal class RootCirTreeDeserializer( val commonModuleNames = parameters.commonModuleNames(targetProvider) - val commonModuleInfos = targetProvider.modulesProvider.loadModuleInfos() + val commonModuleInfos = targetProvider.modulesProvider.moduleInfos .filter { moduleInfo -> moduleInfo.name in commonModuleNames } val typeResolver = CirTypeResolver.create( diff --git a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/utils/mocks.kt b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/utils/mocks.kt index a6e7cdfc206..e700f2576dc 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/utils/mocks.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/utils/mocks.kt @@ -86,9 +86,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers( internal class MockModulesProvider private constructor( private val modules: Map, ) : ModulesProvider { - private val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) } - - override fun loadModuleInfos() = moduleInfos + override val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) } override fun loadModuleMetadata(name: String): SerializedMetadata { val module = modules[name] ?: error("No such module: $name")