diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt index 963d276708a..3a9dc222d1c 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt @@ -25,6 +25,7 @@ import com.intellij.openapi.roots.ModuleRootManager import com.intellij.psi.PsiFile import org.jetbrains.kotlin.idea.KotlinPluginUtil import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator +import org.jetbrains.kotlin.idea.util.projectStructure.version import org.jetbrains.kotlin.idea.versions.MAVEN_STDLIB_ID_JRE7 import org.jetbrains.kotlin.idea.versions.hasJreSpecificRuntime import org.jetbrains.kotlin.resolve.TargetPlatform @@ -62,7 +63,7 @@ class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithG override fun getStdlibArtifactName(sdk: Sdk?, version: String): String { if (sdk != null && hasJreSpecificRuntime(version)) { - val sdkVersion = JavaSdk.getInstance().getVersion(sdk) + val sdkVersion = sdk.version if (sdkVersion != null && sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) { // Android dex can't convert our kotlin-stdlib-jre8 artifact, so use jre7 instead (KT-16530) return MAVEN_STDLIB_ID_JRE7 diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt index 9a2a31791aa..5ba7adf34f5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.idea.framework.JavaRuntimeLibraryDescription import org.jetbrains.kotlin.idea.framework.JsLibraryStdDetectionUtil import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.idea.util.projectStructure.sdk +import org.jetbrains.kotlin.idea.util.projectStructure.version import org.jetbrains.kotlin.idea.versions.LibraryJarDescriptor import org.jetbrains.kotlin.idea.versions.isKotlinJavaRuntime import org.jetbrains.kotlin.resolve.TargetPlatform @@ -76,7 +77,7 @@ open class KotlinJavaModuleConfigurator internal constructor() : KotlinWithLibra LibraryJarDescriptor.REFLECT_JAR, LibraryJarDescriptor.RUNTIME_SRC_JAR, LibraryJarDescriptor.TEST_JAR) - val sdkVersion = sdk?.let { JavaSdk.getInstance().getVersion(it) } ?: return result + val sdkVersion = sdk?.version ?: return result if (sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_7)) { result += listOf(LibraryJarDescriptor.RUNTIME_JRE7_JAR, LibraryJarDescriptor.RUNTIME_JRE7_SOURCES_JAR) } @@ -93,7 +94,7 @@ open class KotlinJavaModuleConfigurator internal constructor() : KotlinWithLibra override fun configureKotlinSettings(modules: List) { val project = modules.firstOrNull()?.project ?: return val canChangeProjectSettings = project.allModules().all { - it.sdk?.let { JavaSdk.getInstance().getVersion(it)?.isAtLeast(JavaSdkVersion.JDK_1_8) } ?: true + it.sdk?.version?.isAtLeast(JavaSdkVersion.JDK_1_8) ?: true } if (canChangeProjectSettings) { Kotlin2JvmCompilerArgumentsHolder.getInstance(project).update { @@ -102,8 +103,8 @@ open class KotlinJavaModuleConfigurator internal constructor() : KotlinWithLibra } else { for (module in modules) { - val hasJdk8 = module.sdk?.let { JavaSdk.getInstance().getVersion(it)?.isAtLeast(JavaSdkVersion.JDK_1_8) } - if (hasJdk8 == true) { + val sdkVersion = module.sdk?.version + if (sdkVersion != null && sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) { val modelsProvider = IdeModifiableModelsProviderImpl(project) val facet = module.getOrCreateFacet(modelsProvider, useProjectSettings = false, commitModel = true) val facetSettings = facet.configuration.settings diff --git a/idea/src/org/jetbrains/kotlin/idea/util/projectStructureUtil.kt b/idea/src/org/jetbrains/kotlin/idea/util/projectStructureUtil.kt index 56d1aca64ac..e260211694b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/projectStructureUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/projectStructureUtil.kt @@ -20,6 +20,8 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.module.ModuleUtilCore import com.intellij.openapi.project.Project +import com.intellij.openapi.projectRoots.JavaSdk +import com.intellij.openapi.projectRoots.JavaSdkVersion import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.OrderEnumerator @@ -36,6 +38,8 @@ fun Module.findLibrary(predicate: (Library) -> Boolean): Library? = OrderEnumera val Module.sdk: Sdk? get() = ModuleRootManager.getInstance(this).sdk +val Sdk.version: JavaSdkVersion? get() = JavaSdk.getInstance().getVersion(this) + fun OrderEnumerator.findLibrary(predicate: (Library) -> Boolean): Library? { var lib: Library? = null forEachLibrary { library -> diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt index 60096d5a03e..60de5ae83fc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt @@ -49,6 +49,7 @@ import org.jetbrains.kotlin.idea.framework.isExternalLibrary import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.projectStructure.allModules +import org.jetbrains.kotlin.idea.util.projectStructure.version import org.jetbrains.kotlin.idea.util.runWithAlternativeResolveEnabled import org.jetbrains.kotlin.idea.vfilefinder.KotlinJavaScriptMetaFileIndex import org.jetbrains.kotlin.idea.vfilefinder.hasSomethingInPackage @@ -334,7 +335,7 @@ fun getStdlibArtifactId(sdk: Sdk?, version: String): String { return MAVEN_STDLIB_ID } - val sdkVersion = sdk?.let { JavaSdk.getInstance().getVersion(it) } + val sdkVersion = sdk?.version return when (sdkVersion) { JavaSdkVersion.JDK_1_8, JavaSdkVersion.JDK_1_9 -> MAVEN_STDLIB_ID_JRE8 JavaSdkVersion.JDK_1_7 -> MAVEN_STDLIB_ID_JRE7 @@ -346,7 +347,7 @@ fun getDefaultJvmTarget(sdk: Sdk?, version: String): JvmTarget? { if (!hasJreSpecificRuntime(version)) { return null } - val sdkVersion = sdk?.let { JavaSdk.getInstance().getVersion(it) } + val sdkVersion = sdk?.version if (sdkVersion != null && sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) { return JvmTarget.JVM_1_8 }