Refactor: move and prettify mpp util code
This commit is contained in:
committed by
Pavel V. Talanov
parent
05e6c4e0a2
commit
fa7531f342
@@ -136,7 +136,7 @@ interface ModuleSourceInfo : IdeaModuleInfo, TrackableModuleInfo {
|
|||||||
sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean) : ModuleSourceInfo {
|
sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean) : ModuleSourceInfo {
|
||||||
override val expectedBy: List<ModuleSourceInfo>
|
override val expectedBy: List<ModuleSourceInfo>
|
||||||
get() {
|
get() {
|
||||||
val expectedByModules = module.findImplementedModules()
|
val expectedByModules = module.implementedModules
|
||||||
return expectedByModules.mapNotNull { if (forProduction) it.productionSourceInfo() else it.testSourceInfo() }
|
return expectedByModules.mapNotNull { if (forProduction) it.productionSourceInfo() else it.testSourceInfo() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-25
@@ -18,26 +18,24 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType.Companion.ID
|
import org.jetbrains.kotlin.idea.facet.KotlinFacetType.Companion.ID
|
||||||
|
|
||||||
fun Module.findImplementingModules() =
|
|
||||||
ModuleManager.getInstance(project).modules.filter { name in it.findImplementedModuleNames() }
|
|
||||||
|
|
||||||
val Module.implementingModules: List<Module>
|
val Module.implementingModules: List<Module>
|
||||||
get() = cached(CachedValueProvider {
|
get() = cached(CachedValueProvider {
|
||||||
CachedValueProvider.Result(
|
CachedValueProvider.Result(
|
||||||
findImplementingModules(),
|
ModuleManager.getInstance(project).modules.filter { name in it.findImplementedModuleNames() },
|
||||||
ProjectRootModificationTracker.getInstance(project)
|
ProjectRootModificationTracker.getInstance(project)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
private fun Module.getModuleInfo(baseModuleSourceInfo: ModuleSourceInfo): ModuleSourceInfo? =
|
val Module.implementedModules: List<Module>
|
||||||
when (baseModuleSourceInfo) {
|
get() = cached<List<Module>>(
|
||||||
is ModuleProductionSourceInfo -> productionSourceInfo()
|
CachedValueProvider {
|
||||||
is ModuleTestSourceInfo -> testSourceInfo()
|
val modelsProvider = IdeModelsProviderImpl(project)
|
||||||
else -> null
|
CachedValueProvider.Result(
|
||||||
}
|
findImplementedModuleNames().mapNotNull { modelsProvider.findIdeModule(it) },
|
||||||
|
ProjectRootModificationTracker.getInstance(project)
|
||||||
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo) =
|
)
|
||||||
findImplementingModules().mapNotNull { it.getModuleInfo(moduleSourceInfo) }
|
}
|
||||||
|
)
|
||||||
|
|
||||||
val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
||||||
get() {
|
get() {
|
||||||
@@ -48,7 +46,7 @@ val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
|||||||
val moduleSourceInfo = moduleInfo as? ModuleSourceInfo ?: return emptyList()
|
val moduleSourceInfo = moduleInfo as? ModuleSourceInfo ?: return emptyList()
|
||||||
val module = moduleSourceInfo.module
|
val module = moduleSourceInfo.module
|
||||||
return module.cached(CachedValueProvider {
|
return module.cached(CachedValueProvider {
|
||||||
val implementingModuleInfos = module.findImplementingModuleInfos(moduleSourceInfo)
|
val implementingModuleInfos = module.findImplementingModuleInfos(moduleSourceInfo.isTests())
|
||||||
val implementingModuleDescriptors = implementingModuleInfos.mapNotNull {
|
val implementingModuleDescriptors = implementingModuleInfos.mapNotNull {
|
||||||
KotlinCacheService.getInstance(module.project).getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor
|
KotlinCacheService.getInstance(module.project).getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor
|
||||||
}
|
}
|
||||||
@@ -60,6 +58,13 @@ val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun Module.findImplementingModuleInfos(isTests: Boolean) =
|
||||||
|
implementingModules.mapNotNull { it.toInfo(isTests) }
|
||||||
|
|
||||||
|
private fun Module.toInfo(isTests: Boolean): ModuleSourceInfo? =
|
||||||
|
if (isTests) testSourceInfo() else productionSourceInfo()
|
||||||
|
|
||||||
val ModuleDescriptor.implementedDescriptors: List<ModuleDescriptor>
|
val ModuleDescriptor.implementedDescriptors: List<ModuleDescriptor>
|
||||||
get() {
|
get() {
|
||||||
val moduleInfo = getCapability(ModuleInfo.Capability)
|
val moduleInfo = getCapability(ModuleInfo.Capability)
|
||||||
@@ -80,13 +85,3 @@ fun Module.findImplementedModuleNames(): List<String> {
|
|||||||
)
|
)
|
||||||
return facet?.configuration?.settings?.implementedModuleNames ?: emptyList()
|
return facet?.configuration?.settings?.implementedModuleNames ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Module.findImplementedModules() = this.cached<List<Module>>(
|
|
||||||
CachedValueProvider {
|
|
||||||
val modelsProvider = IdeModelsProviderImpl(project)
|
|
||||||
CachedValueProvider.Result(
|
|
||||||
findImplementedModuleNames().mapNotNull { modelsProvider.findIdeModule(it) },
|
|
||||||
ProjectRootModificationTracker.getInstance(project)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user