Add JVM target bytecode version 19
Test data in `box/annotations/typeAnnotations` is changed because nested classes in type annotations are rendered differently in JDK 19 (`Outer.Nested` instead of `Outer$Nested`). #KT-54116 Fixed
This commit is contained in:
@@ -35,6 +35,7 @@ enum class JvmTarget(
|
||||
JVM_16("16", Opcodes.V16),
|
||||
JVM_17("17", Opcodes.V16 + 1),
|
||||
JVM_18("18", Opcodes.V16 + 2),
|
||||
JVM_19("19", Opcodes.V16 + 3),
|
||||
;
|
||||
|
||||
override fun toString() = description
|
||||
@@ -60,7 +61,7 @@ enum class JvmTarget(
|
||||
values().asList() - JVM_1_6
|
||||
|
||||
const val SUPPORTED_VERSIONS_DESCRIPTION =
|
||||
"1.8, 9, 10, ..., 18"
|
||||
"1.8, 9, 10, ..., 19"
|
||||
|
||||
init {
|
||||
check(SUPPORTED_VERSIONS_DESCRIPTION == "1.8, 9, 10, ..., ${values().last().description}") {
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ where advanced options include:
|
||||
-Xjava-source-roots=<path> Paths to directories with Java source files
|
||||
-Xjavac-arguments=<option[,]> Java compiler arguments
|
||||
-Xjdk-release=<version> Compile against the specified JDK API version, similarly to javac's `-release`. Requires JDK 9 or newer.
|
||||
Supported versions depend on the used JDK; for JDK 17+ supported versions are 1.8, 9, 10, ..., 18.
|
||||
Supported versions depend on the used JDK; for JDK 17+ supported versions are 1.8, 9, 10, ..., 19.
|
||||
Also sets `-jvm-target` value equal to the selected JDK version
|
||||
-Xjspecify-annotations=ignore|strict|warn
|
||||
Specify behavior for jspecify annotations.
|
||||
|
||||
Vendored
+1
-1
@@ -6,7 +6,7 @@ where possible options include:
|
||||
-include-runtime Include Kotlin runtime into the resulting JAR
|
||||
-java-parameters Generate metadata for Java 1.8 reflection on method parameters
|
||||
-jdk-home <path> Include a custom JDK from the specified location into the classpath instead of the default JAVA_HOME
|
||||
-jvm-target <version> Target version of the generated JVM bytecode (1.8, 9, 10, ..., 18), default is 1.8
|
||||
-jvm-target <version> Target version of the generated JVM bytecode (1.8, 9, 10, ..., 19), default is 1.8
|
||||
-module-name <name> Name of the generated .kotlin_module file
|
||||
-no-jdk Don't automatically include the Java runtime into the classpath
|
||||
-no-reflect Don't automatically include Kotlin reflection into the classpath
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
error: unknown JVM target version: 1.5
|
||||
Supported versions: 1.6, 1.8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
|
||||
Supported versions: 1.6, 1.8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
|
||||
COMPILATION_ERROR
|
||||
|
||||
+6
-8
@@ -11,14 +11,12 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
@interface TypeAnn {}
|
||||
|
||||
public class ImplicitReturn {
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
public @ interface TypeAnn {}
|
||||
|
||||
@ImplicitReturn.TypeAnn
|
||||
@TypeAnn
|
||||
public String bar() {
|
||||
return "OK";
|
||||
}
|
||||
@@ -45,14 +43,14 @@ fun box(): String {
|
||||
checkTypeAnnotation(
|
||||
Kotlin::foo.javaMethod!!.annotatedReturnType,
|
||||
"class java.lang.String",
|
||||
"@ImplicitReturn\$TypeAnn()",
|
||||
"@TypeAnn()",
|
||||
"foo"
|
||||
)
|
||||
|
||||
checkTypeAnnotation(
|
||||
Kotlin::field.javaField!!.annotatedType,
|
||||
"class java.lang.String",
|
||||
"@ImplicitReturn\$TypeAnn()",
|
||||
"@TypeAnn()",
|
||||
"foo"
|
||||
)
|
||||
|
||||
|
||||
+6
-8
@@ -12,14 +12,12 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
@interface TypeAnn {}
|
||||
|
||||
public class ImplicitReturn {
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE_USE)
|
||||
public @ interface TypeAnn {}
|
||||
|
||||
@ImplicitReturn.TypeAnn
|
||||
@TypeAnn
|
||||
public String bar() {
|
||||
return "OK";
|
||||
}
|
||||
@@ -47,14 +45,14 @@ fun box(): String {
|
||||
checkTypeAnnotation(
|
||||
Kotlin::foo.javaMethod!!.annotatedReturnType,
|
||||
"class java.lang.String",
|
||||
"@ImplicitReturn\$TypeAnn()",
|
||||
"@TypeAnn()",
|
||||
"foo"
|
||||
)
|
||||
|
||||
checkTypeAnnotation(
|
||||
Kotlin::field.javaField!!.annotatedType,
|
||||
"class java.lang.String",
|
||||
"@ImplicitReturn\$TypeAnn()",
|
||||
"@TypeAnn()",
|
||||
"foo"
|
||||
)
|
||||
|
||||
|
||||
@@ -17,11 +17,13 @@ fun box(): String {
|
||||
|
||||
// JDK 8 and earlier
|
||||
val expected1 = "[@test.Anno(k1=class $fqName, k2=class [L$fqName;, k3=class [[L$fqName;)]"
|
||||
// JDK 9 and later
|
||||
// JDK 9..18
|
||||
val expected2 = "[@test.Anno(k1=$fqName.class, k2=$fqName[].class, k3=$fqName[][].class)]"
|
||||
// JDK 19 and later
|
||||
val expected3 = "[@test.Anno(k1=<no canonical name>.class, k2=<no canonical name>.class, k3=<no canonical name>.class)]"
|
||||
|
||||
val actual = M::class.annotations.toString()
|
||||
if (actual != expected1 && actual != expected2) return "Fail: $actual"
|
||||
if (actual != expected1 && actual != expected2 && actual != expected3) return "Fail: $actual"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+1
@@ -118,6 +118,7 @@ public final class org/jetbrains/kotlin/gradle/dsl/JvmTarget : java/lang/Enum {
|
||||
public static final field JVM_16 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public static final field JVM_17 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public static final field JVM_18 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public static final field JVM_19 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public static final field JVM_1_8 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public static final field JVM_9 Lorg/jetbrains/kotlin/gradle/dsl/JvmTarget;
|
||||
public final fun getTarget ()Ljava/lang/String;
|
||||
|
||||
+1
@@ -17,6 +17,7 @@ enum class JvmTarget(val target: String) {
|
||||
JVM_16("16"),
|
||||
JVM_17("17"),
|
||||
JVM_18("18"),
|
||||
JVM_19("19"),
|
||||
;
|
||||
|
||||
companion object {
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@ interface CompilerJvmOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOpt
|
||||
val javaParameters: org.gradle.api.provider.Property<kotlin.Boolean>
|
||||
|
||||
/**
|
||||
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 18), default is 1.8
|
||||
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"
|
||||
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 19), default is 1.8
|
||||
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"
|
||||
* Default value: null
|
||||
*/
|
||||
@get:org.gradle.api.tasks.Optional
|
||||
|
||||
+2
-2
@@ -22,8 +22,8 @@ interface KotlinJvmOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
private val org.jetbrains.kotlin.gradle.dsl.JvmTarget?.jvmTargetKotlinOption get() = this?.target
|
||||
|
||||
/**
|
||||
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 18), default is 1.8
|
||||
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"
|
||||
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 19), default is 1.8
|
||||
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"
|
||||
* Default value: null
|
||||
*/
|
||||
var jvmTarget: kotlin.String?
|
||||
|
||||
Reference in New Issue
Block a user