From 90ff8f0e6489caf75f7622248b29868844344cda Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 14 Feb 2024 14:20:31 +0100 Subject: [PATCH] JVM: support -Xjdk-release=7/1.7 #KT-59098 Fixed --- .../src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt | 5 +++-- .../cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args | 8 ++++++++ .../cli/jvm/jdkRelease7WithJvmTarget8Jdk11.out | 4 ++++ .../cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args | 8 ++++++++ .../testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.out | 2 ++ .../org/jetbrains/kotlin/cli/CliTestGenerated.java | 10 ++++++++++ 6 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args create mode 100644 compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.out create mode 100644 compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args create mode 100644 compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.out diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt index 85adcc10b46..511c3d803cf 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt @@ -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 diff --git a/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args new file mode 100644 index 00000000000..0c33283e4ab --- /dev/null +++ b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.args @@ -0,0 +1,8 @@ +-Xjdk-release=7 +-jvm-target +1.8 +-jdk-home +$JDK_11_0 +$TESTDATA_DIR$/jdkRelease.kt +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.out b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.out new file mode 100644 index 00000000000..d1c6a8d93fe --- /dev/null +++ b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk11.out @@ -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 diff --git a/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args new file mode 100644 index 00000000000..c40e3d063dd --- /dev/null +++ b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.args @@ -0,0 +1,8 @@ +-Xjdk-release=1.7 +-jvm-target +1.8 +-jdk-home +$JDK_1_8 +$TESTDATA_DIR$/jdkRelease.kt +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.out b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.out new file mode 100644 index 00000000000..75fecf1964c --- /dev/null +++ b/compiler/testData/cli/jvm/jdkRelease7WithJvmTarget8Jdk8.out @@ -0,0 +1,2 @@ +error: '-Xjdk-release=7' option is not supported by used JDK: $JDK_1_8 +COMPILATION_ERROR diff --git a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java index ca626d85f3d..aa9e83968c2 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -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");