Configuration: Fix JVM target detection in the absence of Kotlin facet

#KT-27021 Fixed
This commit is contained in:
Alexey Sedunov
2018-09-21 16:05:49 +03:00
parent bd3adbd457
commit 391e4c2ad1
@@ -29,6 +29,7 @@ import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.cli.common.arguments.*
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JvmCompilerArgumentsHolder
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
import org.jetbrains.kotlin.idea.configuration.externalCompilerVersion
@@ -41,19 +42,21 @@ import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import kotlin.reflect.KProperty1
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
for (platform in IdePlatformKind.ALL_KINDS) {
if (getRuntimeLibraryVersions(module, rootModel, platform).isNotEmpty()) {
//TODO investigate, looks strange
return platform.defaultPlatform
val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull {
getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty()
} ?: JvmIdePlatformKind
if (platformKind == JvmIdePlatformKind) {
var jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(module.project).settings.jvmTarget?.let { JvmTarget.fromString(it) }
if (jvmTarget == null) {
val sdk = ((rootModel ?: ModuleRootManager.getInstance(module))).sdk
val sdkVersion = (sdk?.sdkType as? JavaSdk)?.getVersion(sdk)
if (sdkVersion == null || sdkVersion >= JavaSdkVersion.JDK_1_8) {
jvmTarget = JvmTarget.JVM_1_8
}
}
return if (jvmTarget != null) JvmIdePlatformKind.Platform(jvmTarget) else JvmIdePlatformKind.defaultPlatform
}
val sdk = ((rootModel ?: ModuleRootManager.getInstance(module))).sdk
val sdkVersion = (sdk?.sdkType as? JavaSdk)?.getVersion(sdk)
return when {
sdkVersion == null || sdkVersion >= JavaSdkVersion.JDK_1_8 -> JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8)
else -> JvmIdePlatformKind.defaultPlatform
}
return platformKind.defaultPlatform
}
fun KotlinFacetSettings.initializeIfNeeded(