[Commonizer] ModulesProvider: refactor 'loadModuleInfos()' to property

This is done to signal that accessing this data is indeed lightweight.

^KT-47430
This commit is contained in:
sebastian.sellmair
2021-08-12 14:59:30 +02:00
committed by Space
parent 6c246738a5
commit 3d4e861f05
6 changed files with 11 additions and 10 deletions

View File

@@ -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<ModuleInfo>
val moduleInfos: Collection<ModuleInfo>
/**
* Loads metadata for the specified module.

View File

@@ -13,7 +13,7 @@ internal fun CommonizerParameters.commonModuleNames(target: CommonizerTarget): S
if (supportedTargets.isEmpty()) return emptySet() // Nothing to do
val allModuleNames: List<Set<String>> = 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

View File

@@ -46,7 +46,7 @@ internal class DefaultModulesProvider(libraries: Collection<NativeLibrary>) : Mo
this.moduleInfoMap = moduleInfoMap
}
override fun loadModuleInfos(): Collection<ModuleInfo> = moduleInfoMap.values
override val moduleInfos: Collection<ModuleInfo> get() = moduleInfoMap.values
override fun loadModuleMetadata(name: String): SerializedMetadata {
val library = libraryMap[name]?.library ?: error("No such library: $name")

View File

@@ -45,7 +45,7 @@ internal class CirProvidedClassifiersByModules private constructor(
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
var hasForwardDeclarations = false
modulesProvider.loadModuleInfos().forEach { moduleInfo ->
modulesProvider.moduleInfos.forEach { moduleInfo ->
moduleInfo.cInteropAttributes?.let { cInteropAttributes ->
// this is a C-interop module
hasForwardDeclarations = true

View File

@@ -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(

View File

@@ -86,9 +86,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers(
internal class MockModulesProvider private constructor(
private val modules: Map<String, ModuleDescriptor>,
) : 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")