[Gradle] KotlinJvmCompilerOptions: Use JvmTarget.DEFAULT as default value for jvmTarget

KTIJ-24976
This commit is contained in:
Sebastian Sellmair
2023-03-30 15:34:12 +02:00
committed by Space Team
parent eb0ff4fbcd
commit c5e154a325
12 changed files with 26 additions and 17 deletions
@@ -24,6 +24,7 @@ open class DefaultValues(
val defaultValue: String,
val type: KType,
val kotlinOptionsType: KType,
val prettyDefaultValue: String? = null,
val possibleValues: List<String>? = null,
val fromKotlinOptionConverterProp: String? = null,
val toKotlinOptionConverterProp: String? = null,
@@ -78,16 +79,17 @@ open class DefaultValues(
)
object JvmTargetVersions : DefaultValues(
"null",
typeOf<JvmTargetDsl?>(),
"org.jetbrains.kotlin.gradle.dsl.JvmTarget.DEFAULT",
typeOf<JvmTargetDsl>(),
typeOf<String?>(),
possibleValues = JvmTarget.supportedValues().map { "\"${it.description}\"" },
fromKotlinOptionConverterProp = """
if (this != null) ${typeOf<JvmTargetDsl>()}.fromTarget(this) else null
""".trimIndent(),
toKotlinOptionConverterProp = """
this?.target
""".trimIndent()
this.target
""".trimIndent(),
prettyDefaultValue = "\"${JvmTarget.DEFAULT}\""
)
object JsEcmaVersions : DefaultValues(
@@ -878,7 +878,7 @@ private fun Printer.generateOptionDeprecation(property: KProperty1<*, *>) {
private fun Printer.generateDoc(property: KProperty1<*, *>) {
val description = property.findAnnotation<Argument>()!!.description
val possibleValues = property.gradleValues.possibleValues
val defaultValue = property.gradleDefaultValue
val defaultValue = property.gradleValues.prettyDefaultValue ?: property.gradleValues.defaultValue
println("/**")
println(" * ${description.replace("\n", " ")}")
@@ -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("}")
}
@@ -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
}
}
@@ -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 {
@@ -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<org.jetbrains.kotlin.gradle.dsl.JvmTarget>
@@ -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)
/**
@@ -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")
}
}
}
@@ -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<org.jetbrains.kotlin.gradle.dsl.JvmTarget> =
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<kotlin.String> =
objectFactory.property(kotlin.String::class.java)
@@ -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
@@ -76,7 +76,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
else -> jvm.javaVersion.toString()
}
JvmTarget.fromTarget(normalizedVersion)
}
}.orElse(JvmTarget.DEFAULT)
)
}
}
@@ -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<K2JVMCompilerArgumen
if (jvmTarget != null) {
arguments.setJvmTarget(jvmTarget);
} else {
arguments.setJvmTarget(JvmTarget.DEFAULT.getDescription());
}
if (jdkHome != null) {