mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
[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:
committed by
Space
parent
6c246738a5
commit
3d4e861f05
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user