From 67d51eb7ee937cf2783db79118bd802257fa2bee Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 17 May 2023 18:17:40 +0200 Subject: [PATCH] Add a separate test configurations for JDK 21 dependent test After it's released, there would be no need in them, but right now they are unavailable through the toolchain, so we can't require it. See KT-58765 for tracking But there should be a dedicated Build configuration with JDK_21_0 env properly set. ^KT-58716 Fixed --- compiler/fir/analysis-tests/build.gradle.kts | 28 +++++++++-- ...LightTreeJdk21DiagnosticTestGenerated.java | 32 +++++++++++++ .../FirPsiJdk21DiagnosticTestGenerated.java | 32 +++++++++++++ .../org/jetbrains/kotlin/test/TestJdkKind.kt | 3 ++ .../kotlin/test/util/KtTestUtil.java | 4 ++ .../testsWithJdk21/newListMethods.fir.kt | 46 +++++++++++++++++++ .../testsWithJdk21/newListMethods.kt | 46 +++++++++++++++++++ compiler/tests-common-new/build.gradle.kts | 27 +++++++++-- .../runners/Jdk21DiagnosticTestGenerated.java | 32 +++++++++++++ .../test/backend/handlers/JvmBoxRunner.kt | 6 ++- .../test/runners/AbstractFirDiagnosticTest.kt | 29 ++++++++++-- .../runners/AbstractJdk21DiagnosticTest.kt | 23 ++++++++++ .../kotlin/test/runners/Jdk21Test.kt | 15 ++++++ .../JvmEnvironmentConfigurator.kt | 3 ++ .../kotlin/test/KotlinTestUtils.java | 3 ++ .../generators/GenerateJUnit5CompilerTests.kt | 19 +++++++- ...tionalBuiltInsMembersSignatureListsTest.kt | 1 + 17 files changed, 332 insertions(+), 17 deletions(-) create mode 100644 compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeJdk21DiagnosticTestGenerated.java create mode 100644 compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiJdk21DiagnosticTestGenerated.java create mode 100644 compiler/testData/diagnostics/testsWithJdk21/newListMethods.fir.kt create mode 100644 compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt create mode 100644 compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/Jdk21DiagnosticTestGenerated.java create mode 100644 compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractJdk21DiagnosticTest.kt create mode 100644 compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/Jdk21Test.kt diff --git a/compiler/fir/analysis-tests/build.gradle.kts b/compiler/fir/analysis-tests/build.gradle.kts index aad11fc42df..91ce9a9a6c7 100644 --- a/compiler/fir/analysis-tests/build.gradle.kts +++ b/compiler/fir/analysis-tests/build.gradle.kts @@ -59,14 +59,34 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } +fun Test.configureTest(configureJUnit: JUnitPlatformOptions.() -> Unit = {}) { + dependsOn(":dist") + workingDir = rootDir + useJUnitPlatform { + configureJUnit() + } + useJsIrBoxTests(version = version, buildDir = "$buildDir/") +} + + projectTest( jUnitMode = JUnitMode.JUnit5, defineJDKEnvVariables = listOf(JdkMajorVersion.JDK_1_8, JdkMajorVersion.JDK_11_0, JdkMajorVersion.JDK_17_0) ) { - dependsOn(":dist") - workingDir = rootDir - useJUnitPlatform() - useJsIrBoxTests(version = version, buildDir = "$buildDir/") + configureTest { + excludeTags("Jdk21Test") + } +} + +// Separate configuration is only necessary while JDK 21 is not released, so cannot be obtained via toolchain. +// See KT-58765 for tracking +projectTest( + "jdk21Tests", + jUnitMode = JUnitMode.JUnit5, +) { + configureTest { + includeTags("Jdk21Test") + } } testsJar() diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeJdk21DiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeJdk21DiagnosticTestGenerated.java new file mode 100644 index 00000000000..0933cba54cb --- /dev/null +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeJdk21DiagnosticTestGenerated.java @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/diagnostics/testsWithJdk21") +@TestDataPath("$PROJECT_ROOT") +public class FirLightTreeJdk21DiagnosticTestGenerated extends AbstractFirLightTreeJdk21DiagnosticTest { + @Test + public void testAllFilesPresentInTestsWithJdk21() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJdk21"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("newListMethods.kt") + public void testNewListMethods() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt"); + } +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiJdk21DiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiJdk21DiagnosticTestGenerated.java new file mode 100644 index 00000000000..6ca4776b17b --- /dev/null +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiJdk21DiagnosticTestGenerated.java @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/diagnostics/testsWithJdk21") +@TestDataPath("$PROJECT_ROOT") +public class FirPsiJdk21DiagnosticTestGenerated extends AbstractFirPsiJdk21DiagnosticTest { + @Test + public void testAllFilesPresentInTestsWithJdk21() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJdk21"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("newListMethods.kt") + public void testNewListMethods() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt"); + } +} diff --git a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestJdkKind.kt b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestJdkKind.kt index e2732b4e267..1b0a77f1ae4 100644 --- a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestJdkKind.kt +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/TestJdkKind.kt @@ -32,6 +32,9 @@ enum class TestJdkKind(val requiresSeparateProcess: Boolean = false) { // JDK found at $JDK_17_0 FULL_JDK_17(requiresSeparateProcess = true), + // JDK found at $JDK_21_0 + FULL_JDK_21(requiresSeparateProcess = true), + // JDK found at java.home FULL_JDK, ANDROID_API, diff --git a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java index 2d0d1a2daf9..aa34496bd40 100644 --- a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java +++ b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/KtTestUtil.java @@ -159,6 +159,10 @@ public class KtTestUtil { return getJdkHome("JDK_17_0", "JDK_17"); } + public static File getJdk21Home() { + return getJdkHome("JDK_21_0", "JDK_21"); + } + @NotNull public static String getTestDataPathBase() { return getHomeDirectory() + "/compiler/testData"; diff --git a/compiler/testData/diagnostics/testsWithJdk21/newListMethods.fir.kt b/compiler/testData/diagnostics/testsWithJdk21/newListMethods.fir.kt new file mode 100644 index 00000000000..ef595ad5612 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJdk21/newListMethods.fir.kt @@ -0,0 +1,46 @@ +// ISSUE: KT-58371 +// WITH_STDLIB + +class A : ArrayList() { + override fun addFirst(t: T) { + super.addFirst(t) + } + + override fun addLast(t: T) { + super.addLast(t) + } + + override fun getFirst(): T = super.getFirst() + override fun getLast(): T = super.getLast() + + override fun removeFirst(): T = super.removeFirst() + override fun removeLast(): T = super.removeLast() + + override fun reversed(): List = super.reversed() +} + +fun foo(x: MutableList, y: ArrayList, z: A) { + x.addFirst("") + x.addLast("") + x.getFirst() + x.getLast() + x.removeFirst() + x.removeLast() + x.reversed() + + y.addFirst("") + y.addLast("") + y.getFirst() + y.getLast() + y.removeFirst() + y.removeLast() + y.reversed() + + z.addFirst("") + z.addLast("") + z.getFirst() + z.getLast() + z.removeFirst() + z.removeLast() + z.reversed() +} diff --git a/compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt b/compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt new file mode 100644 index 00000000000..3c44aaf9b7b --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt @@ -0,0 +1,46 @@ +// ISSUE: KT-58371 +// WITH_STDLIB + +class A : ArrayList() { + override fun addFirst(t: T) { + super.addFirst(t) + } + + override fun addLast(t: T) { + super.addLast(t) + } + + override fun getFirst(): T = super.getFirst() + override fun getLast(): T = super.getLast() + + override fun removeFirst(): T = super.removeFirst() + override fun removeLast(): T = super.removeLast() + + override fun reversed(): List = super.reversed() +} + +fun foo(x: MutableList, y: ArrayList, z: A) { + x.addFirst("") + x.addLast("") + x.getFirst() + x.getLast() + x.removeFirst() + x.removeLast() + x.reversed() + + y.addFirst("") + y.addLast("") + y.getFirst() + y.getLast() + y.removeFirst() + y.removeLast() + y.reversed() + + z.addFirst("") + z.addLast("") + z.getFirst() + z.getLast() + z.removeFirst() + z.removeLast() + z.reversed() +} diff --git a/compiler/tests-common-new/build.gradle.kts b/compiler/tests-common-new/build.gradle.kts index e3c8b469a57..dd8b2b6c742 100644 --- a/compiler/tests-common-new/build.gradle.kts +++ b/compiler/tests-common-new/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.kotlin.ideaExt.idea - plugins { kotlin("jvm") id("jps-compatible") @@ -50,15 +48,34 @@ sourceSets { } } +fun Test.configureTest(configureJUnit: JUnitPlatformOptions.() -> Unit = {}) { + dependsOn(":dist") + workingDir = rootDir + useJUnitPlatform { + configureJUnit() + } +} + projectTest( jUnitMode = JUnitMode.JUnit5, defineJDKEnvVariables = listOf( JdkMajorVersion.JDK_11_0 // e.g. org.jetbrains.kotlin.test.runners.ForeignAnnotationsCompiledJavaTestGenerated.Java11Tests ) ) { - dependsOn(":dist") - workingDir = rootDir - useJUnitPlatform() + configureTest { + excludeTags("Jdk21Test") + } +} + +// Separate configuration is only necessary while JDK 21 is not released, so cannot be obtained via toolchain. +// See KT-58765 for tracking +projectTest( + "jdk21Tests", + jUnitMode = JUnitMode.JUnit5, +) { + configureTest { + includeTags("Jdk21Test") + } } testsJar() diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/Jdk21DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/Jdk21DiagnosticTestGenerated.java new file mode 100644 index 00000000000..d562d6f4ffc --- /dev/null +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/Jdk21DiagnosticTestGenerated.java @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/diagnostics/testsWithJdk21") +@TestDataPath("$PROJECT_ROOT") +public class Jdk21DiagnosticTestGenerated extends AbstractJdk21DiagnosticTest { + @Test + public void testAllFilesPresentInTestsWithJdk21() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJdk21"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("newListMethods.kt") + public void testNewListMethods() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJdk21/newListMethods.kt"); + } +} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/JvmBoxRunner.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/JvmBoxRunner.kt index d5a9da6c299..3b920e18a43 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/JvmBoxRunner.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/JvmBoxRunner.kt @@ -7,7 +7,10 @@ package org.jetbrains.kotlin.test.backend.handlers import junit.framework.TestCase import org.jetbrains.kotlin.backend.common.CodegenUtil.getMemberDeclarationsToGenerate -import org.jetbrains.kotlin.codegen.* +import org.jetbrains.kotlin.codegen.ClassFileFactory +import org.jetbrains.kotlin.codegen.CodegenTestUtil +import org.jetbrains.kotlin.codegen.GeneratedClassLoader +import org.jetbrains.kotlin.codegen.extractUrls import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil.getFileClassInfoNoResolve import org.jetbrains.kotlin.psi.KtFile @@ -181,6 +184,7 @@ open class JvmBoxRunner(testServices: TestServices) : JvmBinaryArtifactHandler(t TestJdkKind.FULL_JDK -> KtTestUtil.getJdk8Home() TestJdkKind.FULL_JDK_11 -> KtTestUtil.getJdk11Home() TestJdkKind.FULL_JDK_17 -> KtTestUtil.getJdk17Home() + TestJdkKind.FULL_JDK_21 -> KtTestUtil.getJdk21Home() else -> error("Unsupported JDK kind: $jdkKind") } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt index 4e70e51561c..c162d8db77d 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.configureFirHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.irHandlersStep +import org.jetbrains.kotlin.test.directives.CodegenTestDirectives import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS @@ -31,17 +32,15 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.FrontendFacade import org.jetbrains.kotlin.test.model.FrontendKinds +import org.jetbrains.kotlin.test.services.JsLibraryProvider +import org.jetbrains.kotlin.test.services.TestService +import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator import org.jetbrains.kotlin.test.services.service import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider -import org.jetbrains.kotlin.test.FirParser -import org.jetbrains.kotlin.test.directives.CodegenTestDirectives -import org.jetbrains.kotlin.test.services.JsLibraryProvider -import org.jetbrains.kotlin.test.services.TestService -import org.jetbrains.kotlin.test.services.TestServices abstract class AbstractFirDiagnosticTestBase(val parser: FirParser) : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { @@ -51,6 +50,26 @@ abstract class AbstractFirDiagnosticTestBase(val parser: FirParser) : AbstractKo } } +@Jdk21Test +abstract class AbstractFirPsiJdk21DiagnosticTest : AbstractFirDiagnosticTestBase(FirParser.Psi) { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.defaultDirectives { + JDK_KIND with TestJdkKind.FULL_JDK_21 + } + } +} + +@Jdk21Test +abstract class AbstractFirLightTreeJdk21DiagnosticTest : AbstractFirDiagnosticTestBase(FirParser.LightTree) { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.defaultDirectives { + JDK_KIND with TestJdkKind.FULL_JDK_21 + } + } +} + abstract class AbstractFirPsiDiagnosticTest : AbstractFirDiagnosticTestBase(FirParser.Psi) abstract class AbstractFirLightTreeDiagnosticsTest : AbstractFirDiagnosticTestBase(FirParser.LightTree) { override fun configure(builder: TestConfigurationBuilder) { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractJdk21DiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractJdk21DiagnosticTest.kt new file mode 100644 index 00000000000..cc8b436a49c --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractJdk21DiagnosticTest.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.runners + +import org.jetbrains.kotlin.test.TestJdkKind +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.ConfigurationDirectives +import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives + +@Jdk21Test +abstract class AbstractJdk21DiagnosticTest : AbstractDiagnosticTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.defaultDirectives { + JvmEnvironmentConfigurationDirectives.JDK_KIND with TestJdkKind.FULL_JDK_21 + +ConfigurationDirectives.WITH_STDLIB + +JvmEnvironmentConfigurationDirectives.WITH_REFLECT + } + } +} \ No newline at end of file diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/Jdk21Test.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/Jdk21Test.kt new file mode 100644 index 00000000000..2b1432cd94c --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/Jdk21Test.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.runners + +import org.junit.jupiter.api.Tag + +/** + * This tag is only necessary while JDK 21 is not released, so cannot be obtained via toolchain. + * See KT-58765 for tracking + */ +@Tag("Jdk21Test") +annotation class Jdk21Test diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt index 76d20355466..50c079c7981 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt @@ -135,6 +135,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig TestJdkKind.FULL_JDK_6 -> File(System.getenv("JDK_16") ?: error("Environment variable JDK_16 is not set")) TestJdkKind.FULL_JDK_11 -> KtTestUtil.getJdk11Home() TestJdkKind.FULL_JDK_17 -> KtTestUtil.getJdk17Home() + TestJdkKind.FULL_JDK_21 -> KtTestUtil.getJdk21Home() TestJdkKind.FULL_JDK -> if (JavaVersion.current() >= JavaVersion.compose(9)) File(System.getProperty("java.home")) else null TestJdkKind.ANDROID_API -> null } @@ -146,6 +147,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig TestJdkKind.FULL_JDK_6 -> null TestJdkKind.FULL_JDK_11 -> null TestJdkKind.FULL_JDK_17 -> null + TestJdkKind.FULL_JDK_21 -> null TestJdkKind.FULL_JDK -> null } } @@ -197,6 +199,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig TestJdkKind.FULL_JDK_6 -> {} TestJdkKind.FULL_JDK_11 -> {} TestJdkKind.FULL_JDK_17 -> {} + TestJdkKind.FULL_JDK_21 -> {} TestJdkKind.FULL_JDK -> {} } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java index f1b4ce857c5..dc99e97f217 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -197,6 +197,9 @@ public class KotlinTestUtils { else if (jdkKind == TestJdkKind.FULL_JDK_17) { configuration.put(JVMConfigurationKeys.JDK_HOME, KtTestUtil.getJdk17Home()); } + else if (jdkKind == TestJdkKind.FULL_JDK_21) { + configuration.put(JVMConfigurationKeys.JDK_HOME, KtTestUtil.getJdk21Home()); + } else if (JavaVersion.current().compareTo(JavaVersion.compose(9)) >= 0) { configuration.put(JVMConfigurationKeys.JDK_HOME, new File(System.getProperty("java.home"))); } diff --git a/compiler/tests-for-compiler-generator/tests/org/jetbrains/kotlin/test/generators/GenerateJUnit5CompilerTests.kt b/compiler/tests-for-compiler-generator/tests/org/jetbrains/kotlin/test/generators/GenerateJUnit5CompilerTests.kt index 79dea7c89c3..90b54df3480 100644 --- a/compiler/tests-for-compiler-generator/tests/org/jetbrains/kotlin/test/generators/GenerateJUnit5CompilerTests.kt +++ b/compiler/tests-for-compiler-generator/tests/org/jetbrains/kotlin/test/generators/GenerateJUnit5CompilerTests.kt @@ -10,8 +10,11 @@ import org.jetbrains.kotlin.generators.util.TestGeneratorUtil import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.runners.* import org.jetbrains.kotlin.test.runners.codegen.* -import org.jetbrains.kotlin.test.runners.ir.* -import org.jetbrains.kotlin.test.runners.ir.interpreter.* +import org.jetbrains.kotlin.test.runners.ir.AbstractClassicJvmIrTextTest +import org.jetbrains.kotlin.test.runners.ir.AbstractFirLightTreeJvmIrTextTest +import org.jetbrains.kotlin.test.runners.ir.AbstractFirPsiJvmIrTextTest +import org.jetbrains.kotlin.test.runners.ir.interpreter.AbstractJvmIrInterpreterAfterFirPsi2IrTest +import org.jetbrains.kotlin.test.runners.ir.interpreter.AbstractJvmIrInterpreterAfterPsi2IrTest import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN import org.jetbrains.kotlin.visualizer.fir.AbstractFirVisualizerTest import org.jetbrains.kotlin.visualizer.psi.AbstractPsiVisualizerTest @@ -26,6 +29,10 @@ fun generateJUnit5CompilerTests(args: Array) { model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern) } + testClass { + model("diagnostics/testsWithJdk21", excludedPattern = excludedCustomTestdataPattern) + } + testClass { model("diagnostics/tests/javac", pattern = "^(.*)\\.kts?$", excludedPattern = excludedCustomTestdataPattern) } @@ -209,6 +216,14 @@ fun generateJUnit5CompilerTests(args: Array) { model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern) } + testClass { + model("diagnostics/testsWithJdk21", excludedPattern = excludedCustomTestdataPattern) + } + + testClass { + model("diagnostics/testsWithJdk21", excludedPattern = excludedCustomTestdataPattern) + } + testClass(suiteTestClassName = "FirOldFrontendMPPDiagnosticsWithPsiTestGenerated") { model("diagnostics/tests/multiplatform", pattern = "^(.*)\\.kts?$", excludedPattern = excludedCustomTestdataPattern) } diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt index 49bd32aec4e..ca392485c25 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt @@ -75,6 +75,7 @@ class AdditionalBuiltInsMembersSignatureListsTest : KotlinTestWithEnvironment() } } + // TODO: Get rid of it once JDK 21 is released (KT-58765 for tracking) private val LATE_JDK_SIGNATURES = mapOf( "java/util/List" to setOf( // From JDK 21