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 72a0450b412..dcd64054bb1 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt @@ -66,6 +66,49 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { assertModuleModuleDepScope("js_test", "common_test", DependencyScope.COMPILE) } + @Test + fun testPlatformToCommonDependencyRoot() { + createProjectSubFile("settings.gradle", "rootProject.name = 'foo'\ninclude ':jvm', ':js'") + + val kotlinVersion = "1.1.0" + + createProjectSubFile("build.gradle", """ + buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") + } + } + + apply plugin: 'kotlin-platform-common' + + project('jvm') { + apply plugin: 'kotlin-platform-jvm' + + dependencies { + implement project(':') + } + } + + project('js') { + apply plugin: 'kotlin-platform-js' + + dependencies { + implement project(':') + } + } + """) + + importProject() + assertModuleModuleDepScope("jvm_main", "foo_main", DependencyScope.COMPILE) + assertModuleModuleDepScope("jvm_test", "foo_test", DependencyScope.COMPILE) + assertModuleModuleDepScope("js_main", "foo_main", DependencyScope.COMPILE) + assertModuleModuleDepScope("js_test", "foo_test", DependencyScope.COMPILE) + } + @Test fun testMultiProject() { createProjectSubFile("settings.gradle", "include ':common-lib', ':jvm-lib', ':js-lib', ':common-app', ':jvm-app', ':js-app'") diff --git a/idea/kotlin-gradle-tooling/src/KotlinGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinGradleModelBuilder.kt index ab1cd4fdb02..4480264d034 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinGradleModelBuilder.kt @@ -89,7 +89,7 @@ class KotlinGradleModelBuilder : ModelBuilderService { toProcess.add(startingProject) val processed = HashSet() val result = HashSet() - result.add(startingProject.path) + result.add(startingProject.pathOrName()) while (toProcess.isNotEmpty()) { val project = toProcess.pollFirst() @@ -97,7 +97,7 @@ class KotlinGradleModelBuilder : ModelBuilderService { if (!project.plugins.hasPlugin(kotlinPlatformCommonPluginId)) continue - result.add(project.path) + result.add(project.pathOrName()) val compileConfiguration = project.configurations.findByName("compile") ?: continue val dependencies = compileConfiguration @@ -115,6 +115,9 @@ class KotlinGradleModelBuilder : ModelBuilderService { return result } + // see GradleProjectResolverUtil.getModuleId() in IDEA codebase + private fun Project.pathOrName() = if (path == ":") name else path + @Suppress("UNCHECKED_CAST") private fun Task.getCompilerArguments(methodName: String): List { return try {