Configuration: Fix JVM target detection in the absence of Kotlin facet
#KT-27021 Fixed
This commit is contained in:
@@ -29,6 +29,7 @@ import com.intellij.openapi.util.text.StringUtil
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||||
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
|
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
|
||||||
import org.jetbrains.kotlin.config.*
|
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.KotlinCommonCompilerArgumentsHolder
|
||||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
||||||
import org.jetbrains.kotlin.idea.configuration.externalCompilerVersion
|
import org.jetbrains.kotlin.idea.configuration.externalCompilerVersion
|
||||||
@@ -41,19 +42,21 @@ import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
|||||||
import kotlin.reflect.KProperty1
|
import kotlin.reflect.KProperty1
|
||||||
|
|
||||||
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
|
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
|
||||||
for (platform in IdePlatformKind.ALL_KINDS) {
|
val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull {
|
||||||
if (getRuntimeLibraryVersions(module, rootModel, platform).isNotEmpty()) {
|
getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty()
|
||||||
//TODO investigate, looks strange
|
} ?: JvmIdePlatformKind
|
||||||
return platform.defaultPlatform
|
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
|
||||||
}
|
}
|
||||||
|
return platformKind.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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KotlinFacetSettings.initializeIfNeeded(
|
fun KotlinFacetSettings.initializeIfNeeded(
|
||||||
|
|||||||
Reference in New Issue
Block a user