Set default jvmTarget when creating new Gradle project
jvmTarget "1.8" is required to be able to use inline functions from kotlin-stdlib-jre8.
This commit is contained in:
+10
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ModifiableRootModel
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID
|
||||
import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion
|
||||
import org.jetbrains.kotlin.idea.versions.getDefaultJvmTarget
|
||||
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
|
||||
import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider
|
||||
import javax.swing.Icon
|
||||
@@ -77,6 +78,15 @@ class GradleKotlinJavaFrameworkSupportProvider : GradleKotlinFrameworkSupportPro
|
||||
|
||||
override fun getRuntimeLibrary(rootModel: ModifiableRootModel) =
|
||||
KotlinWithGradleConfigurator.getRuntimeLibraryForSdk(rootModel.sdk, bundledRuntimeVersion())
|
||||
|
||||
override fun addSupport(module: Module, rootModel: ModifiableRootModel, modifiableModelsProvider: ModifiableModelsProvider, buildScriptData: BuildScriptDataBuilder) {
|
||||
super.addSupport(module, rootModel, modifiableModelsProvider, buildScriptData)
|
||||
val jvmTarget = getDefaultJvmTarget(rootModel.sdk, bundledRuntimeVersion())
|
||||
if (jvmTarget != null) {
|
||||
buildScriptData.addOther("compileKotlin {\n kotlinOptions.jvmTarget = \"1.8\"\n}\n\n")
|
||||
buildScriptData.addOther("compileTestKotlin {\n kotlinOptions.jvmTarget = \"1.8\"\n}\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class GradleKotlinJSFrameworkSupportProvider : GradleKotlinFrameworkSupportProvider("KOTLIN_JS", "Kotlin (JavaScript)") {
|
||||
|
||||
@@ -41,6 +41,7 @@ import com.intellij.util.indexing.FileBasedIndex
|
||||
import com.intellij.util.indexing.ScalarIndexExtension
|
||||
import com.intellij.util.text.VersionComparatorUtil
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
||||
import org.jetbrains.kotlin.idea.configuration.*
|
||||
import org.jetbrains.kotlin.idea.framework.JavaRuntimeDetectionUtil
|
||||
@@ -344,6 +345,17 @@ fun getStdlibArtifactId(sdk: Sdk?, version: String): String {
|
||||
return artifactId
|
||||
}
|
||||
|
||||
fun getDefaultJvmTarget(sdk: Sdk?, version: String): JvmTarget? {
|
||||
if (!hasJreSpecificRuntime(version)) {
|
||||
return null
|
||||
}
|
||||
val sdkVersion = sdk?.let { JavaSdk.getInstance().getVersion(it) }
|
||||
if (sdkVersion != null && sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) {
|
||||
return JvmTarget.JVM_1_8
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun hasJreSpecificRuntime(version: String): Boolean =
|
||||
VersionComparatorUtil.compare(version, "1.1.0") >= 0 ||
|
||||
isSnapshot(version) ||
|
||||
|
||||
Reference in New Issue
Block a user