JVM: support -Xjdk-release=7/1.7

#KT-59098 Fixed
This commit is contained in:
Alexander Udalov
2024-02-14 14:20:31 +01:00
committed by Space Team
parent 12f393791b
commit 90ff8f0e64
6 changed files with 35 additions and 2 deletions
@@ -31,6 +31,7 @@ fun CompilerConfiguration.setupJvmSpecificArguments(arguments: K2JVMCompilerArgu
val value =
when (releaseTargetArg) {
"1.6" -> 6
"1.7" -> 7
"1.8" -> 8
else -> releaseTargetArg.toIntOrNull()
}
@@ -52,7 +53,7 @@ fun CompilerConfiguration.setupJvmSpecificArguments(arguments: K2JVMCompilerArgu
}
val jvmTargetValue = when (releaseTargetArg) {
"6", "1.6" -> {
"6", "1.6", "7", "1.7" -> {
if (jvmTargetArg == null) {
messageCollector.report(
ERROR,
@@ -113,7 +114,7 @@ fun CompilerConfiguration.setupJvmSpecificArguments(arguments: K2JVMCompilerArgu
private fun isCompatibleJvmTargetAndRelease(jvmTarget: String, release: String): Boolean {
if (jvmTarget == "1.8") {
// This is needed to be able to compile stdlib with -jvm-target 1.8 and -Xjdk-release=1.6/1.7.
return release in listOf("6", "1.6", "8", "1.8")
return release in listOf("6", "1.6", "7", "1.7", "8", "1.8")
}
return jvmTarget == release
@@ -0,0 +1,8 @@
-Xjdk-release=7
-jvm-target
1.8
-jdk-home
$JDK_11_0
$TESTDATA_DIR$/jdkRelease.kt
-d
$TEMP_DIR$
@@ -0,0 +1,4 @@
compiler/testData/cli/jvm/jdkRelease.kt:5:26: error: unresolved reference 'stream'.
fun stream() = java.util.stream.Stream.of(42)
^^^^^^
COMPILATION_ERROR
@@ -0,0 +1,8 @@
-Xjdk-release=1.7
-jvm-target
1.8
-jdk-home
$JDK_1_8
$TESTDATA_DIR$/jdkRelease.kt
-d
$TEMP_DIR$
@@ -0,0 +1,2 @@
error: '-Xjdk-release=7' option is not supported by used JDK: $JDK_1_8
COMPILATION_ERROR
@@ -770,6 +770,16 @@ public class CliTestGenerated extends AbstractCliTest {
runTest("compiler/testData/cli/jvm/jdkRelease6WithoutExplicitJvmTarget.args");
}
@TestMetadata("jdkRelease7WithJvmTarget8Jdk11.args")
public void testJdkRelease7WithJvmTarget8Jdk11() {
runTest("compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args");
}
@TestMetadata("jdkRelease7WithJvmTarget8Jdk8.args")
public void testJdkRelease7WithJvmTarget8Jdk8() {
runTest("compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args");
}
@TestMetadata("jdkRelease8.args")
public void testJdkRelease8() {
runTest("compiler/testData/cli/jvm/jdkRelease8.args");