Support JVM target versions up to 12
#KT-26240 Fixed
This commit is contained in:
@@ -244,6 +244,10 @@ public abstract class AnnotationCodegen {
|
|||||||
|
|
||||||
annotationTargetMaps.put(JvmTarget.JVM_1_6, jvm6);
|
annotationTargetMaps.put(JvmTarget.JVM_1_6, jvm6);
|
||||||
annotationTargetMaps.put(JvmTarget.JVM_1_8, jvm8);
|
annotationTargetMaps.put(JvmTarget.JVM_1_8, jvm8);
|
||||||
|
annotationTargetMaps.put(JvmTarget.JVM_9, jvm8);
|
||||||
|
annotationTargetMaps.put(JvmTarget.JVM_10, jvm8);
|
||||||
|
annotationTargetMaps.put(JvmTarget.JVM_11, jvm8);
|
||||||
|
annotationTargetMaps.put(JvmTarget.JVM_12, jvm8);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateTargetAnnotation(
|
private void generateTargetAnnotation(
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
|||||||
@Argument(
|
@Argument(
|
||||||
value = "-jvm-target",
|
value = "-jvm-target",
|
||||||
valueDescription = "<version>",
|
valueDescription = "<version>",
|
||||||
description = "Target version of the generated JVM bytecode (1.6 or 1.8), default is 1.6"
|
description = "Target version of the generated JVM bytecode (1.6, 1.8, 9, 10, 11 or 12), default is 1.6"
|
||||||
)
|
)
|
||||||
var jvmTarget: String? by NullableStringFreezableVar(JvmTarget.DEFAULT.description)
|
var jvmTarget: String? by NullableStringFreezableVar(JvmTarget.DEFAULT.description)
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.config
|
package org.jetbrains.kotlin.config
|
||||||
|
|
||||||
import org.jetbrains.org.objectweb.asm.Opcodes
|
import org.jetbrains.org.objectweb.asm.Opcodes
|
||||||
@@ -21,10 +22,13 @@ import org.jetbrains.org.objectweb.asm.Opcodes
|
|||||||
enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
||||||
JVM_1_6("1.6"),
|
JVM_1_6("1.6"),
|
||||||
JVM_1_8("1.8"),
|
JVM_1_8("1.8"),
|
||||||
|
JVM_9("9"),
|
||||||
|
JVM_10("10"),
|
||||||
|
JVM_11("11"),
|
||||||
|
JVM_12("12"),
|
||||||
;
|
;
|
||||||
|
|
||||||
val bytecodeVersion: Int by lazy {
|
val bytecodeVersion: Int by lazy {
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
when (this) {
|
when (this) {
|
||||||
JVM_1_6 -> Opcodes.V1_6
|
JVM_1_6 -> Opcodes.V1_6
|
||||||
JVM_1_8 ->
|
JVM_1_8 ->
|
||||||
@@ -33,6 +37,10 @@ enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
|||||||
java.lang.Boolean.valueOf(System.getProperty("kotlin.test.substitute.bytecode.1.8.to.1.9")) -> Opcodes.V9
|
java.lang.Boolean.valueOf(System.getProperty("kotlin.test.substitute.bytecode.1.8.to.1.9")) -> Opcodes.V9
|
||||||
else -> Opcodes.V1_8
|
else -> Opcodes.V1_8
|
||||||
}
|
}
|
||||||
|
JVM_9 -> Opcodes.V9
|
||||||
|
JVM_10 -> Opcodes.V9 + 1
|
||||||
|
JVM_11 -> Opcodes.V9 + 2
|
||||||
|
JVM_12 -> Opcodes.V9 + 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,16 +52,13 @@ enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
|||||||
fun fromString(string: String) = values().find { it.description == string }
|
fun fromString(string: String) = values().find { it.description == string }
|
||||||
|
|
||||||
fun getDescription(bytecodeVersion: Int): String {
|
fun getDescription(bytecodeVersion: Int): String {
|
||||||
@Suppress("DEPRECATION")
|
val platformDescription = values().find { it.bytecodeVersion == bytecodeVersion }?.description ?: when (bytecodeVersion) {
|
||||||
val platformDescription = values().find { it.bytecodeVersion == bytecodeVersion }?.description ?:
|
Opcodes.V1_7 -> "1.7"
|
||||||
when (bytecodeVersion) {
|
else -> null
|
||||||
Opcodes.V1_7 -> "1.7"
|
}
|
||||||
Opcodes.V9 -> "1.9"
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
|
|
||||||
return if (platformDescription != null) "JVM target $platformDescription"
|
return if (platformDescription != null) "JVM target $platformDescription"
|
||||||
else "JVM bytecode version $bytecodeVersion"
|
else "JVM bytecode version $bytecodeVersion"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.*
|
|||||||
class InterfaceDefaultMethodCallChecker(val jvmTarget: JvmTarget) : CallChecker {
|
class InterfaceDefaultMethodCallChecker(val jvmTarget: JvmTarget) : CallChecker {
|
||||||
|
|
||||||
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
|
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
|
||||||
val supportDefaults = jvmTarget == JvmTarget.JVM_1_8
|
val supportDefaults = jvmTarget >= JvmTarget.JVM_1_8
|
||||||
|
|
||||||
val descriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return
|
val descriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return
|
||||||
if (descriptor is JavaPropertyDescriptor) return
|
if (descriptor is JavaPropertyDescriptor) return
|
||||||
|
|||||||
Vendored
+1
-1
@@ -5,7 +5,7 @@ where possible options include:
|
|||||||
-include-runtime Include Kotlin runtime in to resulting .jar
|
-include-runtime Include Kotlin runtime in to resulting .jar
|
||||||
-java-parameters Generate metadata for Java 1.8 reflection on method parameters
|
-java-parameters Generate metadata for Java 1.8 reflection on method parameters
|
||||||
-jdk-home <path> Path to JDK home directory to include into classpath, if differs from default JAVA_HOME
|
-jdk-home <path> Path to JDK home directory to include into classpath, if differs from default JAVA_HOME
|
||||||
-jvm-target <version> Target version of the generated JVM bytecode (1.6 or 1.8), default is 1.6
|
-jvm-target <version> Target version of the generated JVM bytecode (1.6, 1.8, 9, 10, 11 or 12), default is 1.6
|
||||||
-module-name <name> Name of the generated .kotlin_module file
|
-module-name <name> Name of the generated .kotlin_module file
|
||||||
-no-jdk Don't include Java runtime into classpath
|
-no-jdk Don't include Java runtime into classpath
|
||||||
-no-reflect Don't include kotlin-reflect.jar into classpath
|
-no-reflect Don't include kotlin-reflect.jar into classpath
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
error: unknown JVM target version: 1.5
|
error: unknown JVM target version: 1.5
|
||||||
Supported versions: 1.6, 1.8
|
Supported versions: 1.6, 1.8, 9, 10, 11, 12
|
||||||
COMPILATION_ERROR
|
COMPILATION_ERROR
|
||||||
|
|||||||
+2
-2
@@ -23,8 +23,8 @@ interface KotlinJvmOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOption
|
|||||||
var jdkHome: kotlin.String?
|
var jdkHome: kotlin.String?
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Target version of the generated JVM bytecode (1.6 or 1.8), default is 1.6
|
* Target version of the generated JVM bytecode (1.6, 1.8, 9, 10, 11 or 12), default is 1.6
|
||||||
* Possible values: "1.6", "1.8"
|
* Possible values: "1.6", "1.8", "9", "10", "11", "12"
|
||||||
* Default value: "1.6"
|
* Default value: "1.6"
|
||||||
*/
|
*/
|
||||||
var jvmTarget: kotlin.String
|
var jvmTarget: kotlin.String
|
||||||
|
|||||||
Reference in New Issue
Block a user