diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt index 308304a3971..603251b20ac 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt @@ -146,15 +146,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() ?: emptyList() for (implementsModuleId in implementsModuleIds) { - val compositePrefix = if (resolverCtx.models.ideaProject != gradleModule.project - && implementsModuleId.startsWith(":") - ) { - gradleModule.project.name - } else { - "" - } - - val targetModule = findModuleById(ideProject, compositePrefix + implementsModuleId) ?: continue + val targetModule = findModuleById(ideProject, gradleModule, implementsModuleId) ?: continue if (useModulePerSourceSet()) { val targetSourceSetsByName = ExternalSystemApiUtil @@ -189,7 +181,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() ideModule.compilerArgumentsBySourceSet = gradleModel.compilerArgumentsBySourceSet ideModule.coroutines = gradleModel.coroutines ideModule.platformPluginId = gradleModel.platformPluginId - addImplementedModuleNames(ideModule, ideProject, gradleModel) + addImplementedModuleNames(gradleModule, ideModule, ideProject, gradleModel) if (useModulePerSourceSet()) { super.populateModuleDependencies(gradleModule, ideModule, ideProject) @@ -197,11 +189,12 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() } private fun addImplementedModuleNames( + gradleModule: IdeaModule, dependentModule: DataNode, ideProject: DataNode, gradleModel: KotlinGradleModel ) { - val implementedModules = gradleModel.implements.mapNotNull { findModuleById(ideProject, it) } + val implementedModules = gradleModel.implements.mapNotNull { findModuleById(ideProject, gradleModule, it) } if (useModulePerSourceSet()) { val dependentSourceSets = dependentModule.getSourceSetsMap() val implementedSourceSetMaps = implementedModules.map { it.getSourceSetsMap() } @@ -226,7 +219,14 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() ideModule.createChild(ProjectKeys.MODULE_DEPENDENCY, moduleDependencyData) } - private fun findModuleById(ideProject: DataNode, moduleId: String): DataNode? { - return ideProject.children.find { (it.data as? ModuleData)?.id == moduleId } as DataNode? + private fun findModuleById(ideProject: DataNode, gradleModule: IdeaModule, moduleId: String): DataNode? { + val isCompositeProject = resolverCtx.models.ideaProject != gradleModule.project + val compositePrefix = + if (isCompositeProject && moduleId.startsWith(":")) gradleModule.project.name + else "" + + val fullModuleId = compositePrefix + moduleId + + return ideProject.children.find { (it.data as? ModuleData)?.id == fullModuleId } as DataNode? } } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt index 827008b5de1..5885ca6b929 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt @@ -198,6 +198,12 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { ) importProject() + + TestCase.assertEquals(listOf("common_main"), facetSettings("jvm_main").implementedModuleNames) + TestCase.assertEquals(listOf("common_test"), facetSettings("jvm_test").implementedModuleNames) + TestCase.assertEquals(listOf("common_main"), facetSettings("js_main").implementedModuleNames) + TestCase.assertEquals(listOf("common_test"), facetSettings("js_test").implementedModuleNames) + assertModuleModuleDepScope("jvm_main", "common_main", DependencyScope.COMPILE) assertModuleModuleDepScope("jvm_test", "common_test", DependencyScope.COMPILE) assertModuleModuleDepScope("js_main", "common_main", DependencyScope.COMPILE)