Separate JVM target option from javac's --enable-preview analogue
This commit is contained in:
+8
-1
@@ -25,9 +25,16 @@ abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenT
|
||||
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>) {
|
||||
javaClassesOutputDirectory = writeJavaFiles(files)!!.let { directory ->
|
||||
val jvmTargets = files.mapNotNullTo(mutableSetOf()) { it.directives["JVM_TARGET"]?.let((JvmTarget)::fromString) }
|
||||
val enablePreview = files.any { it.directives.contains("ENABLE_JVM_PREVIEW") }
|
||||
check(jvmTargets.size <= 1) { "Having different JVM_TARGETs for different files is not supported in this test." }
|
||||
CodegenTestUtil.compileJava(
|
||||
CodegenTestUtil.findJavaSourcesInDirectory(directory), emptyList(), extractJavacOptions(files, jvmTargets.firstOrNull())
|
||||
CodegenTestUtil.findJavaSourcesInDirectory(directory),
|
||||
emptyList(),
|
||||
extractJavacOptions(
|
||||
files,
|
||||
jvmTargets.firstOrNull(),
|
||||
enablePreview,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -529,7 +529,11 @@ public abstract class CodegenTestCase extends KotlinBaseTest<KotlinBaseTest.Test
|
||||
updateJavaClasspath(javaClasspath);
|
||||
|
||||
javaClassesOutputDirectory = getJavaClassesOutputDirectory();
|
||||
List<String> javacOptions = extractJavacOptions(files, configuration.get(JVMConfigurationKeys.JVM_TARGET));
|
||||
List<String> javacOptions = extractJavacOptions(
|
||||
files,
|
||||
configuration.get(JVMConfigurationKeys.JVM_TARGET),
|
||||
configuration.getBoolean(JVMConfigurationKeys.ENABLE_JVM_PREVIEW)
|
||||
);
|
||||
List<String> finalJavacOptions = prepareJavacOptions(javaClasspath, javacOptions, javaClassesOutputDirectory);
|
||||
|
||||
try {
|
||||
@@ -551,15 +555,19 @@ public abstract class CodegenTestCase extends KotlinBaseTest<KotlinBaseTest.Test
|
||||
protected void updateJavaClasspath(@NotNull List<String> javaClasspath) {}
|
||||
|
||||
@NotNull
|
||||
protected static List<String> extractJavacOptions(@NotNull List<TestFile> files, @Nullable JvmTarget kotlinTarget) {
|
||||
protected static List<String> extractJavacOptions(
|
||||
@NotNull List<TestFile> files,
|
||||
@Nullable JvmTarget kotlinTarget,
|
||||
boolean isJvmPreviewEnabled
|
||||
) {
|
||||
List<String> javacOptions = new ArrayList<>(0);
|
||||
for (TestFile file : files) {
|
||||
javacOptions.addAll(InTextDirectivesUtils.findListWithPrefixes(file.content, "// JAVAC_OPTIONS:"));
|
||||
}
|
||||
|
||||
if (kotlinTarget != null && kotlinTarget.isPreview()) {
|
||||
if (kotlinTarget != null && isJvmPreviewEnabled) {
|
||||
javacOptions.add("--release");
|
||||
javacOptions.add(kotlinTarget.getDescriptionForJavacArgument());
|
||||
javacOptions.add(kotlinTarget.getDescription());
|
||||
javacOptions.add("--enable-preview");
|
||||
return javacOptions;
|
||||
}
|
||||
@@ -582,7 +590,7 @@ public abstract class CodegenTestCase extends KotlinBaseTest<KotlinBaseTest.Test
|
||||
if (JAVA_COMPILATION_TARGET != null && !javacOptions.contains("-target"))
|
||||
return JAVA_COMPILATION_TARGET;
|
||||
if (kotlinTarget != null && kotlinTarget.compareTo(JvmTarget.JVM_1_6) > 0)
|
||||
return kotlinTarget.getDescriptionForJavacArgument();
|
||||
return kotlinTarget.getDescription();
|
||||
if (IS_SOURCE_6_STILL_SUPPORTED)
|
||||
return "1.6";
|
||||
return null;
|
||||
|
||||
@@ -227,6 +227,11 @@ abstract class KotlinBaseTest<F : KotlinBaseTest.TestFile> : KtUsefulTestCase()
|
||||
?: error("Unknown target: $targetString")
|
||||
configuration.put(JVMConfigurationKeys.JVM_TARGET, jvmTarget)
|
||||
}
|
||||
|
||||
if (directives.contains("ENABLE_JVM_PREVIEW")) {
|
||||
configuration.put(JVMConfigurationKeys.ENABLE_JVM_PREVIEW, true)
|
||||
}
|
||||
|
||||
val version = directives["LANGUAGE_VERSION"]
|
||||
if (version != null) {
|
||||
throw AssertionError(
|
||||
|
||||
Reference in New Issue
Block a user