Fix dependsOn module names
Use Gradle Project IDs instead of names, because for composite Gradle builds module names are appended with some additional prefixes, which causes mismatch
This commit is contained in:
+24
-3
@@ -7,9 +7,12 @@ package org.jetbrains.kotlin.idea.caches.project
|
|||||||
|
|
||||||
import com.intellij.facet.FacetManager
|
import com.intellij.facet.FacetManager
|
||||||
import com.intellij.facet.FacetTypeRegistry
|
import com.intellij.facet.FacetTypeRegistry
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
|
import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager
|
||||||
import com.intellij.openapi.externalSystem.service.project.IdeModelsProviderImpl
|
import com.intellij.openapi.externalSystem.service.project.IdeModelsProviderImpl
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.module.ModuleManager
|
import com.intellij.openapi.module.ModuleManager
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.caches.project.cacheInvalidatingOnRootModifications
|
import org.jetbrains.kotlin.caches.project.cacheInvalidatingOnRootModifications
|
||||||
@@ -58,7 +61,11 @@ val Module.implementingModules: List<Module>
|
|||||||
when (facetSettings?.mppVersion) {
|
when (facetSettings?.mppVersion) {
|
||||||
null -> emptyList()
|
null -> emptyList()
|
||||||
|
|
||||||
KotlinMultiplatformVersion.M3 -> moduleManager.modules.filter { it.facetSettings?.dependsOnModuleNames?.contains(name) == true }
|
KotlinMultiplatformVersion.M3 -> {
|
||||||
|
val thisModuleStableName = stableModuleName
|
||||||
|
|
||||||
|
moduleManager.modules.filter { it.facetSettings?.dependsOnModuleNames?.contains(thisModuleStableName) == true }
|
||||||
|
}
|
||||||
|
|
||||||
KotlinMultiplatformVersion.M2 -> moduleManager.getModuleDependentModules(this).filter {
|
KotlinMultiplatformVersion.M2 -> moduleManager.getModuleDependentModules(this).filter {
|
||||||
it.isNewMPPModule && it.externalProjectId == externalProjectId
|
it.isNewMPPModule && it.externalProjectId == externalProjectId
|
||||||
@@ -68,6 +75,19 @@ val Module.implementingModules: List<Module>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val Module.stableModuleName: String
|
||||||
|
get() = ExternalSystemModulePropertyManager.getInstance(this).getLinkedProjectId()
|
||||||
|
?: name.also {
|
||||||
|
if (!ApplicationManager.getApplication().isUnitTestMode) LOG.error("Don't have a LinkedProjectId for module $this for HMPP!")
|
||||||
|
}
|
||||||
|
|
||||||
|
private val Project.modulesByLinkedKey: Map<String, Module>
|
||||||
|
get() = cacheInvalidatingOnRootModifications {
|
||||||
|
val moduleManager = ModuleManager.getInstance(this)
|
||||||
|
|
||||||
|
moduleManager.modules.associateBy { it.stableModuleName }
|
||||||
|
}
|
||||||
|
|
||||||
val Module.implementedModules: List<Module>
|
val Module.implementedModules: List<Module>
|
||||||
get() = cacheInvalidatingOnRootModifications {
|
get() = cacheInvalidatingOnRootModifications {
|
||||||
val facetSettings = facetSettings
|
val facetSettings = facetSettings
|
||||||
@@ -75,8 +95,9 @@ val Module.implementedModules: List<Module>
|
|||||||
null -> emptyList()
|
null -> emptyList()
|
||||||
|
|
||||||
KotlinMultiplatformVersion.M3 -> {
|
KotlinMultiplatformVersion.M3 -> {
|
||||||
val modelsProvider = IdeModelsProviderImpl(project)
|
facetSettings.dependsOnModuleNames.mapNotNull {
|
||||||
facetSettings.dependsOnModuleNames.mapNotNull { modelsProvider.findIdeModule(it) }
|
project.modulesByLinkedKey[it]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KotlinMultiplatformVersion.M2 -> {
|
KotlinMultiplatformVersion.M2 -> {
|
||||||
|
|||||||
+4
-1
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.config.ExternalSystemTestTask
|
|||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.gradle.*
|
import org.jetbrains.kotlin.gradle.*
|
||||||
import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING
|
import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver.Companion.fullName
|
||||||
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
||||||
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
@@ -868,7 +869,9 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
info.gradleModuleId = getModuleId(resolverCtx, gradleModule)
|
info.gradleModuleId = getModuleId(resolverCtx, gradleModule)
|
||||||
info.actualPlatforms.addSimplePlatforms(sourceSet.actualPlatforms.platforms)
|
info.actualPlatforms.addSimplePlatforms(sourceSet.actualPlatforms.platforms)
|
||||||
info.isTestModule = sourceSet.isTestModule
|
info.isTestModule = sourceSet.isTestModule
|
||||||
info.dependsOn = sourceSet.dependsOnSourceSets.toList().map { gradleModule.name + "_" + it }
|
info.dependsOn = sourceSet.dependsOnSourceSets.toList().map {
|
||||||
|
getModuleId(resolverCtx, gradleModule) + ":" + it
|
||||||
|
}
|
||||||
//TODO(auskov): target flours are lost here
|
//TODO(auskov): target flours are lost here
|
||||||
info.compilerArguments = createCompilerArguments(emptyList(), sourceSet.actualPlatforms.getSinglePlatform()).also {
|
info.compilerArguments = createCompilerArguments(emptyList(), sourceSet.actualPlatforms.getSinglePlatform()).also {
|
||||||
it.multiPlatform = true
|
it.multiPlatform = true
|
||||||
|
|||||||
Reference in New Issue
Block a user