Retrieve module descriptors for implementing modules on demand
This commit is contained in:
@@ -265,10 +265,10 @@ abstract class AnalyzerFacade {
|
|||||||
|
|
||||||
class LazyModuleDependencies<M: ModuleInfo>(
|
class LazyModuleDependencies<M: ModuleInfo>(
|
||||||
storageManager: StorageManager,
|
storageManager: StorageManager,
|
||||||
module: M,
|
private val module: M,
|
||||||
modulePlatforms: (M) -> MultiTargetPlatform?,
|
modulePlatforms: (M) -> MultiTargetPlatform?,
|
||||||
firstDependency: M? = null,
|
firstDependency: M? = null,
|
||||||
resolverForProject: ResolverForProjectImpl<M>
|
private val resolverForProject: ResolverForProjectImpl<M>
|
||||||
) : ModuleDependencies {
|
) : ModuleDependencies {
|
||||||
private val dependencies = storageManager.createLazyValue {
|
private val dependencies = storageManager.createLazyValue {
|
||||||
val moduleDescriptor = resolverForProject.descriptorForModule(module)
|
val moduleDescriptor = resolverForProject.descriptorForModule(module)
|
||||||
@@ -288,22 +288,24 @@ class LazyModuleDependencies<M: ModuleInfo>(
|
|||||||
}.toList()
|
}.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val visibleInternals = storageManager.createLazyValue {
|
|
||||||
module.modulesWhoseInternalsAreVisible().mapTo(LinkedHashSet()) {
|
|
||||||
resolverForProject.descriptorForModule(it as M)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val implementingModules = storageManager.createLazyValue {
|
private val implementingModules = storageManager.createLazyValue {
|
||||||
if (modulePlatforms(module) != MultiTargetPlatform.Common) emptySet<ModuleDescriptorImpl>()
|
if (modulePlatforms(module) != MultiTargetPlatform.Common) emptySet<M>()
|
||||||
else resolverForProject.modules
|
else resolverForProject.modules
|
||||||
.filter { modulePlatforms(it) != MultiTargetPlatform.Common && module in it.dependencies() }
|
.filterTo(mutableSetOf()) {
|
||||||
.mapTo(mutableSetOf(), resolverForProject::descriptorForModule)
|
modulePlatforms(it) != MultiTargetPlatform.Common && module in it.dependencies()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val allDependencies: List<ModuleDescriptorImpl> get() = dependencies()
|
override val allDependencies: List<ModuleDescriptorImpl> get() = dependencies()
|
||||||
override val modulesWhoseInternalsAreVisible: Set<ModuleDescriptorImpl> get() = visibleInternals()
|
|
||||||
override val allImplementingModules: Set<ModuleDescriptorImpl> get() = implementingModules()
|
override val modulesWhoseInternalsAreVisible: Set<ModuleDescriptorImpl>
|
||||||
|
get() =
|
||||||
|
module.modulesWhoseInternalsAreVisible().mapTo(LinkedHashSet()) {
|
||||||
|
resolverForProject.descriptorForModule(it as M)
|
||||||
|
}
|
||||||
|
|
||||||
|
override val allImplementingModules: Set<ModuleDescriptorImpl>
|
||||||
|
get() = implementingModules().mapTo(mutableSetOf()) { resolverForProject.descriptorForModule(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -95,7 +95,7 @@ class KotlinCodeBlockModificationListener(
|
|||||||
val newModCount = modificationTrackerImpl.outOfCodeBlockModificationCount
|
val newModCount = modificationTrackerImpl.outOfCodeBlockModificationCount
|
||||||
val affectedModule = lastAffectedModule
|
val affectedModule = lastAffectedModule
|
||||||
if (affectedModule != null && newModCount == lastAffectedModuleModCount + 1) {
|
if (affectedModule != null && newModCount == lastAffectedModuleModCount + 1) {
|
||||||
if (perModuleChangesHighwatermark== null) {
|
if (perModuleChangesHighwatermark == null) {
|
||||||
perModuleChangesHighwatermark = lastAffectedModuleModCount
|
perModuleChangesHighwatermark = lastAffectedModuleModCount
|
||||||
}
|
}
|
||||||
perModuleModCount[affectedModule] = newModCount
|
perModuleModCount[affectedModule] = newModCount
|
||||||
|
|||||||
Reference in New Issue
Block a user