diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/classic/JavaCompilerFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/classic/JavaCompilerFacade.kt index a7a59d7f6ee..9fb5c884459 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/classic/JavaCompilerFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/classic/JavaCompilerFacade.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.test.compileJavaFilesExternally import org.jetbrains.kotlin.test.directives.CodegenTestDirectives +import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.USE_JAVAC_BASED_ON_JVM_TARGET import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices @@ -51,7 +52,7 @@ class JavaCompilerFacade(private val testServices: TestServices) { val javaFiles = module.javaFiles.map { testServices.sourceFileProvider.getRealFileForSourceFile(it) } val ignoreErrors = CodegenTestDirectives.IGNORE_JAVA_ERRORS in module.directives - compileJavaFiles(configuration[JVMConfigurationKeys.JVM_TARGET] ?: JvmTarget.DEFAULT, javaFiles, finalJavacOptions, ignoreErrors) + compileJavaFiles(module, configuration[JVMConfigurationKeys.JVM_TARGET] ?: JvmTarget.DEFAULT, javaFiles, finalJavacOptions, ignoreErrors) } @OptIn(ExperimentalStdlibApi::class) @@ -73,9 +74,9 @@ class JavaCompilerFacade(private val testServices: TestServices) { } } - private fun compileJavaFiles(jvmTarget: JvmTarget, files: List, javacOptions: List, ignoreErrors: Boolean) { + private fun compileJavaFiles(module: TestModule, jvmTarget: JvmTarget, files: List, javacOptions: List, ignoreErrors: Boolean) { val targetIsJava8OrLower = System.getProperty("java.version").startsWith("1.") - if (targetIsJava8OrLower) { + if (USE_JAVAC_BASED_ON_JVM_TARGET !in module.directives || targetIsJava8OrLower) { org.jetbrains.kotlin.test.compileJavaFiles( files, javacOptions, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/CodegenTestDirectives.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/CodegenTestDirectives.kt index 97c16f3c67f..fe6f06a271e 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/CodegenTestDirectives.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/CodegenTestDirectives.kt @@ -28,6 +28,14 @@ object CodegenTestDirectives : SimpleDirectivesContainer() { applicability = Global ) + val USE_JAVAC_BASED_ON_JVM_TARGET by directive( + description = """ + Determine version of javac for compilation of java files based + on JvmTarget of module. If not enabled then javac from + current runtime will be used + """.trimIndent() + ) + val JAVAC_OPTIONS by stringDirective( description = "Specify javac options to compile java files" )