diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt index 5b64b6d1dc3..3cf9e7a2c1d 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt @@ -25,8 +25,6 @@ import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.impl.libraries.LibraryEx -import com.intellij.openapi.util.io.FileUtil -import com.intellij.util.PathUtil import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType @@ -43,9 +41,11 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.util.projectStructure.allModules +import org.jetbrains.kotlin.idea.util.projectStructure.sdk import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Assert import org.junit.Test +import java.util.* internal fun GradleImportingTestCase.facetSettings(moduleName: String) = KotlinFacet.get(getModule(moduleName))!!.configuration.settings @@ -75,6 +75,13 @@ class GradleFacetImportTest : GradleImportingTestCase() { super.tearDown() } + private fun assertKotlinSdk(vararg moduleNames: String) { + val sdks = moduleNames.map { getModule(it).sdk!! } + val refSdk = sdks.firstOrNull() ?: return + Assert.assertTrue(refSdk.sdkType is KotlinSdkType) + Assert.assertTrue(sdks.all { it === refSdk }) + } + @Test fun testJvmImport() { createProjectSubFile( @@ -611,8 +618,7 @@ compileTestKotlin { assertEquals(JSLibraryKind, (stdlib as LibraryEx).kind) assertTrue(stdlib.getFiles(OrderRootType.CLASSES).isNotEmpty()) - Assert.assertTrue(ModuleRootManager.getInstance(getModule("project_main")).sdk!!.sdkType is KotlinSdkType) - Assert.assertTrue(ModuleRootManager.getInstance(getModule("project_test")).sdk!!.sdkType is KotlinSdkType) + assertKotlinSdk("project_main", "project_test") Assert.assertEquals( listOf("file:///src/main/java" to KotlinSourceRootType.Source, @@ -2077,8 +2083,7 @@ compileTestKotlin { val stdlib = rootManager.orderEntries.filterIsInstance().single().library assertEquals(CommonLibraryKind, (stdlib as LibraryEx).kind) - Assert.assertTrue(ModuleRootManager.getInstance(getModule("project_main")).sdk!!.sdkType is KotlinSdkType) - Assert.assertTrue(ModuleRootManager.getInstance(getModule("project_test")).sdk!!.sdkType is KotlinSdkType) + assertKotlinSdk("project_main", "project_test") Assert.assertEquals( listOf("file:///src/main/kotlin" to KotlinSourceRootType.Source, diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index e2bb9bc06d3..f52c1520267 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -42,6 +42,7 @@ import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgu import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.util.projectStructure.sdk import org.jetbrains.kotlin.idea.versions.* import kotlin.reflect.KProperty1 @@ -221,7 +222,14 @@ private fun Module.configureSdkIfPossible(compilerArguments: CommonCompilerArgum val jdkHome = compilerArguments.jdkHome ?: return allSdks.firstOrNull { it.sdkType is JavaSdk && FileUtil.comparePaths(it.homePath, jdkHome) == 0 } ?: return } else { - allSdks.firstOrNull { it.sdkType is KotlinSdkType } ?: KotlinSdkType.INSTANCE.createSdkWithUniqueName(allSdks.toList()) + allSdks.firstOrNull { it.sdkType is KotlinSdkType } + ?: modelsProvider + .modifiableModuleModel + .modules + .asSequence() + .mapNotNull { modelsProvider.getModifiableRootModel(it).sdk } + .firstOrNull { it.sdkType is KotlinSdkType } + ?: KotlinSdkType.INSTANCE.createSdkWithUniqueName(allSdks.toList()) } modelsProvider.getModifiableRootModel(this).sdk = sdk