diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt index 2c1acd09be4..eecbeb6aa96 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt @@ -7,7 +7,11 @@ package org.jetbrains.kotlin.idea.configuration import com.intellij.ide.util.projectWizard.ModuleWizardStep import com.intellij.ide.util.projectWizard.WizardContext +import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager +import com.intellij.openapi.externalSystem.model.ProjectSystemId +import com.intellij.openapi.externalSystem.model.project.ModuleData import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep +import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.module.Module import com.intellij.openapi.roots.ui.configuration.ModulesProvider import com.intellij.openapi.vfs.VfsUtil @@ -21,6 +25,7 @@ import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl import org.jetbrains.plugins.gradle.settings.DistributionType +import com.intellij.openapi.externalSystem.model.project.ProjectData import javax.swing.Icon abstract class KotlinGradleAbstractMultiplatformModuleBuilder( @@ -106,6 +111,23 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder( } if (notImportedCommonSourceSets) GradlePropertiesFileFacade.forProject(module.project).addNotImportedCommonSourceSetsProperty() + // Ensure project root path is set + val propertyManager = ExternalSystemModulePropertyManager.getInstance(module) + val path = externalProjectSettings.externalProjectPath + val externalSystemId = propertyManager.getExternalSystemId() + if (ExternalSystemApiUtil.getExternalRootProjectPath(module) == null && externalSystemId != null) { + val projectSystemId = ProjectSystemId(externalSystemId) + val projectData = ProjectData(projectSystemId, module.name, path, path) + val moduleData = ModuleData( + propertyManager.getLinkedProjectId() ?: "", + projectSystemId, + propertyManager.getExternalModuleType() ?: "", + module.name, + path, + path + ) + propertyManager.setExternalOptions(projectSystemId, moduleData, projectData) + } } finally { flushSettingsGradleCopy(module) } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt index ff95f7d35f2..1a6c39eed26 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt @@ -83,7 +83,8 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase>() diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/GradleMultiplatformWizardTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/GradleMultiplatformWizardTest.kt index 503ac03eb42..be009444e59 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/GradleMultiplatformWizardTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/GradleMultiplatformWizardTest.kt @@ -44,6 +44,14 @@ class GradleMultiplatformWizardTest : AbstractGradleMultiplatformWizardTest() { runTaskInProject(project, builder.nativeTestName) } + @Test + fun testSharedWithQualifiedName() { + val builder = KotlinGradleSharedMultiplatformModuleBuilder() + val project = testImportFromBuilder(builder, "SampleTests", "SampleTestsJVM", "SampleTestsNative", metadataInside = true, useQualifiedModuleNames = true) + runTaskInProject(project, builder.nativeTestName) + } + + @Test fun testWeb() { testImportFromBuilder(KotlinGradleWebMultiplatformModuleBuilder(), "SampleTests", "SampleTestsJVM")