From c5e154a32504fc77c805dafbe9bb070903b7d93d Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Thu, 30 Mar 2023 15:34:12 +0200 Subject: [PATCH] [Gradle] KotlinJvmCompilerOptions: Use JvmTarget.DEFAULT as default value for jvmTarget KTIJ-24976 --- .../kotlin/generators/arguments/DefaultValues.kt | 10 ++++++---- .../generators/arguments/GenerateGradleOptions.kt | 2 +- .../kotlin/generators/arguments/jvmTargetGenerator.kt | 2 ++ .../org/jetbrains/kotlin/gradle/dsl/JvmTarget.kt | 2 ++ .../api/kotlin-gradle-plugin-api.api | 1 + .../kotlin/gradle/dsl/KotlinJvmCompilerOptions.kt | 3 +-- .../jetbrains/kotlin/gradle/dsl/KotlinJvmOptions.kt | 8 ++++---- .../jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt | 4 ++-- .../gradle/dsl/KotlinJvmCompilerOptionsDefault.kt | 2 +- .../gradle/dsl/KotlinJvmCompilerOptionsHelper.kt | 4 ++-- .../kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt | 2 +- .../org/jetbrains/kotlin/maven/K2JVMCompileMojo.java | 3 +++ 12 files changed, 26 insertions(+), 17 deletions(-) diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/DefaultValues.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/DefaultValues.kt index 95a33a3761c..9148f8da919 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/DefaultValues.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/DefaultValues.kt @@ -24,6 +24,7 @@ open class DefaultValues( val defaultValue: String, val type: KType, val kotlinOptionsType: KType, + val prettyDefaultValue: String? = null, val possibleValues: List? = null, val fromKotlinOptionConverterProp: String? = null, val toKotlinOptionConverterProp: String? = null, @@ -78,16 +79,17 @@ open class DefaultValues( ) object JvmTargetVersions : DefaultValues( - "null", - typeOf(), + "org.jetbrains.kotlin.gradle.dsl.JvmTarget.DEFAULT", + typeOf(), typeOf(), possibleValues = JvmTarget.supportedValues().map { "\"${it.description}\"" }, fromKotlinOptionConverterProp = """ if (this != null) ${typeOf()}.fromTarget(this) else null """.trimIndent(), toKotlinOptionConverterProp = """ - this?.target - """.trimIndent() + this.target + """.trimIndent(), + prettyDefaultValue = "\"${JvmTarget.DEFAULT}\"" ) object JsEcmaVersions : DefaultValues( diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index 53aa30cc7f8..9a03695b753 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -878,7 +878,7 @@ private fun Printer.generateOptionDeprecation(property: KProperty1<*, *>) { private fun Printer.generateDoc(property: KProperty1<*, *>) { val description = property.findAnnotation()!!.description val possibleValues = property.gradleValues.possibleValues - val defaultValue = property.gradleDefaultValue + val defaultValue = property.gradleValues.prettyDefaultValue ?: property.gradleValues.defaultValue println("/**") println(" * ${description.replace("\n", " ")}") diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/jvmTargetGenerator.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/jvmTargetGenerator.kt index a7003d4ad99..cbc04f34a55 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/jvmTargetGenerator.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/jvmTargetGenerator.kt @@ -28,6 +28,8 @@ internal fun generateJvmTarget( println("fun fromTarget(target: String): JvmTarget =") println(" JvmTarget.values().firstOrNull { it.target == target }") println(" ?: throw IllegalArgumentException(\"Unknown Kotlin JVM target: ${'$'}target\")") + println() + println("val DEFAULT = ${JvmTarget.DEFAULT.name}") } println("}") } diff --git a/libraries/tools/kotlin-gradle-compiler-types/src/generated/kotlin/org/jetbrains/kotlin/gradle/dsl/JvmTarget.kt b/libraries/tools/kotlin-gradle-compiler-types/src/generated/kotlin/org/jetbrains/kotlin/gradle/dsl/JvmTarget.kt index 96efc1e7149..79114bc2310 100644 --- a/libraries/tools/kotlin-gradle-compiler-types/src/generated/kotlin/org/jetbrains/kotlin/gradle/dsl/JvmTarget.kt +++ b/libraries/tools/kotlin-gradle-compiler-types/src/generated/kotlin/org/jetbrains/kotlin/gradle/dsl/JvmTarget.kt @@ -25,5 +25,7 @@ enum class JvmTarget(val target: String) { fun fromTarget(target: String): JvmTarget = JvmTarget.values().firstOrNull { it.target == target } ?: throw IllegalArgumentException("Unknown Kotlin JVM target: $target") + + val DEFAULT = JVM_1_8 } } diff --git a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api index 207a34d53f8..1d531cf625b 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api +++ b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api @@ -100,6 +100,7 @@ public final class org/jetbrains/kotlin/gradle/dsl/JvmTarget : java/lang/Enum { public final class org/jetbrains/kotlin/gradle/dsl/JvmTarget$Companion { public final fun fromTarget (Ljava/lang/String;)Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget; + public final fun getDEFAULT ()Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget; } public abstract interface class org/jetbrains/kotlin/gradle/dsl/KaptArguments { diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptions.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptions.kt index 309c6582246..edbc90dbb47 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptions.kt @@ -17,9 +17,8 @@ interface KotlinJvmCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommo /** * Target version of the generated JVM bytecode (1.8, 9, 10, ..., 20), default is 1.8 * Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" - * Default value: null + * Default value: "1.8" */ - @get:org.gradle.api.tasks.Optional @get:org.gradle.api.tasks.Input val jvmTarget: org.gradle.api.provider.Property diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptions.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptions.kt index 268525409ed..aacfac04b89 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptions.kt @@ -18,15 +18,15 @@ interface KotlinJvmOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions private val kotlin.String?.jvmTargetCompilerOption get() = if (this != null) org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(this) else null - private val org.jetbrains.kotlin.gradle.dsl.JvmTarget?.jvmTargetKotlinOption get() = this?.target + private val org.jetbrains.kotlin.gradle.dsl.JvmTarget.jvmTargetKotlinOption get() = this.target /** * Target version of the generated JVM bytecode (1.8, 9, 10, ..., 20), default is 1.8 * Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" - * Default value: null + * Default value: "1.8" */ - var jvmTarget: kotlin.String? - get() = options.jvmTarget.orNull.jvmTargetKotlinOption + var jvmTarget: kotlin.String + get() = options.jvmTarget.get().jvmTargetKotlinOption set(value) = options.jvmTarget.set(value.jvmTargetCompilerOption) /** diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt index c59f74df1c7..b108929505c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt @@ -584,9 +584,9 @@ class KotlinJavaToolchainTest : KGPBaseTest() { tasks.named("compileKotlin") { doLast { def actualJvmTarget = compilerOptions.jvmTarget.orNull - if (actualJvmTarget != null) { + if (actualJvmTarget != org.jetbrains.kotlin.gradle.dsl.JvmTarget.DEFAULT) { //noinspection GroovyAssignabilityCheck - throw new GradleException("Expected `jvmTarget` value is 'null' but the actual value was ${'$'}actualJvmTarget") + throw new GradleException("Expected `jvmTarget` value is 'JvmTarget.DEFAULT' but the actual value was ${'$'}actualJvmTarget") } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsDefault.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsDefault.kt index 2244093aed8..659d90a8b89 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsDefault.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsDefault.kt @@ -13,7 +13,7 @@ internal abstract class KotlinJvmCompilerOptionsDefault @javax.inject.Inject con objectFactory.property(kotlin.Boolean::class.java).convention(false) override val jvmTarget: org.gradle.api.provider.Property = - objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JvmTarget::class.java) + objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JvmTarget::class.java).convention(org.jetbrains.kotlin.gradle.dsl.JvmTarget.DEFAULT) override val moduleName: org.gradle.api.provider.Property = objectFactory.property(kotlin.String::class.java) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt index 86bed83ed4d..c28ac8aceb0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt @@ -13,7 +13,7 @@ internal object KotlinJvmCompilerOptionsHelper { ) { org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillCompilerArguments(from, args) args.javaParameters = from.javaParameters.get() - args.jvmTarget = from.jvmTarget.orNull?.target + args.jvmTarget = from.jvmTarget.get().target args.moduleName = from.moduleName.orNull args.noJdk = from.noJdk.get() @@ -27,7 +27,7 @@ internal object KotlinJvmCompilerOptionsHelper { ) { org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillDefaultValues(args) args.javaParameters = false - args.jvmTarget = null + args.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.DEFAULT.target args.moduleName = null args.noJdk = false diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt index f11620fc6d9..a278cd8a590 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt @@ -76,7 +76,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( else -> jvm.javaVersion.toString() } JvmTarget.fromTarget(normalizedVersion) - } + }.orElse(JvmTarget.DEFAULT) ) } } diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java index d3964e03e4e..80d6abdb5f6 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.cli.common.ExitCode; import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.kotlin.cli.common.messages.MessageCollector; import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler; +import org.jetbrains.kotlin.config.JvmTarget; import org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunnerKt; import org.jetbrains.kotlin.maven.incremental.FileCopier; import org.jetbrains.kotlin.maven.incremental.MavenICReporter; @@ -186,6 +187,8 @@ public class K2JVMCompileMojo extends KotlinCompileMojoBase