[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.
|
* 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.
|
* 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
|
if (supportedTargets.isEmpty()) return emptySet() // Nothing to do
|
||||||
|
|
||||||
val allModuleNames: List<Set<String>> = supportedTargets.toList().map { targetProvider ->
|
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
|
return allModuleNames.reduce { a, b -> a intersect b } // there are modules that are present in every target
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ internal class DefaultModulesProvider(libraries: Collection<NativeLibrary>) : Mo
|
|||||||
this.moduleInfoMap = moduleInfoMap
|
this.moduleInfoMap = moduleInfoMap
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadModuleInfos(): Collection<ModuleInfo> = moduleInfoMap.values
|
override val moduleInfos: Collection<ModuleInfo> get() = moduleInfoMap.values
|
||||||
|
|
||||||
override fun loadModuleMetadata(name: String): SerializedMetadata {
|
override fun loadModuleMetadata(name: String): SerializedMetadata {
|
||||||
val library = libraryMap[name]?.library ?: error("No such library: $name")
|
val library = libraryMap[name]?.library ?: error("No such library: $name")
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ internal class CirProvidedClassifiersByModules private constructor(
|
|||||||
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
|
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
|
||||||
var hasForwardDeclarations = false
|
var hasForwardDeclarations = false
|
||||||
|
|
||||||
modulesProvider.loadModuleInfos().forEach { moduleInfo ->
|
modulesProvider.moduleInfos.forEach { moduleInfo ->
|
||||||
moduleInfo.cInteropAttributes?.let { cInteropAttributes ->
|
moduleInfo.cInteropAttributes?.let { cInteropAttributes ->
|
||||||
// this is a C-interop module
|
// this is a C-interop module
|
||||||
hasForwardDeclarations = true
|
hasForwardDeclarations = true
|
||||||
|
|||||||
+5
-2
@@ -5,7 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.commonizer.tree.deserializer
|
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.mergedtree.CirProvidedClassifiers
|
||||||
import org.jetbrains.kotlin.commonizer.metadata.CirTypeResolver
|
import org.jetbrains.kotlin.commonizer.metadata.CirTypeResolver
|
||||||
import org.jetbrains.kotlin.commonizer.tree.CirTreeRoot
|
import org.jetbrains.kotlin.commonizer.tree.CirTreeRoot
|
||||||
@@ -17,7 +20,7 @@ internal class RootCirTreeDeserializer(
|
|||||||
|
|
||||||
val commonModuleNames = parameters.commonModuleNames(targetProvider)
|
val commonModuleNames = parameters.commonModuleNames(targetProvider)
|
||||||
|
|
||||||
val commonModuleInfos = targetProvider.modulesProvider.loadModuleInfos()
|
val commonModuleInfos = targetProvider.modulesProvider.moduleInfos
|
||||||
.filter { moduleInfo -> moduleInfo.name in commonModuleNames }
|
.filter { moduleInfo -> moduleInfo.name in commonModuleNames }
|
||||||
|
|
||||||
val typeResolver = CirTypeResolver.create(
|
val typeResolver = CirTypeResolver.create(
|
||||||
|
|||||||
@@ -86,9 +86,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers(
|
|||||||
internal class MockModulesProvider private constructor(
|
internal class MockModulesProvider private constructor(
|
||||||
private val modules: Map<String, ModuleDescriptor>,
|
private val modules: Map<String, ModuleDescriptor>,
|
||||||
) : ModulesProvider {
|
) : ModulesProvider {
|
||||||
private val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) }
|
override val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) }
|
||||||
|
|
||||||
override fun loadModuleInfos() = moduleInfos
|
|
||||||
|
|
||||||
override fun loadModuleMetadata(name: String): SerializedMetadata {
|
override fun loadModuleMetadata(name: String): SerializedMetadata {
|
||||||
val module = modules[name] ?: error("No such module: $name")
|
val module = modules[name] ?: error("No such module: $name")
|
||||||
|
|||||||
Reference in New Issue
Block a user