From 806db3852dacfb62e9840ddbc6c3a0d2f7638d2e Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 12 Apr 2017 11:47:09 +0200 Subject: [PATCH] Support for custom default jvmTarget in jvm backend tests --- .../kotlin/codegen/CodegenTestCase.java | 17 +++++++++++++++-- .../ir/AbstractIrBlackBoxCodegenTest.java | 3 ++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/compiler/tests-common/org/jetbrains/kotlin/codegen/CodegenTestCase.java b/compiler/tests-common/org/jetbrains/kotlin/codegen/CodegenTestCase.java index f74e08ca94b..52520d8cd65 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/codegen/CodegenTestCase.java +++ b/compiler/tests-common/org/jetbrains/kotlin/codegen/CodegenTestCase.java @@ -78,12 +78,15 @@ import static org.jetbrains.kotlin.test.KotlinTestUtils.getAnnotationsJar; public abstract class CodegenTestCase extends KtUsefulTestCase { private static final String DEFAULT_TEST_FILE_NAME = "a_test"; + public static final String DEFAULT_JVM_TARGET_FOR_TEST = "kotlin.test.default.jvm.target"; protected KotlinCoreEnvironment myEnvironment; protected CodegenTestFiles myFiles; protected ClassFileFactory classFileFactory; protected GeneratedClassLoader initializedClassLoader; + protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY; + public final String defaultJvmTarget = System.getProperty(DEFAULT_JVM_TARGET_FOR_TEST); protected final void createEnvironmentWithMockJdkAndIdeaAnnotations( @NotNull ConfigurationKind configurationKind, @@ -125,7 +128,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase { } @NotNull - protected static CompilerConfiguration createConfiguration( + protected CompilerConfiguration createConfiguration( @NotNull ConfigurationKind kind, @NotNull TestJdkKind jdkKind, @NotNull List classpath, @@ -135,6 +138,8 @@ public abstract class CodegenTestCase extends KtUsefulTestCase { CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource); updateConfigurationByDirectivesInTestFiles(testFilesWithConfigurationDirectives, configuration); + updateConfiguration(configuration); + setCustomDefaultJvmTarget(configuration); return configuration; } @@ -495,6 +500,15 @@ public abstract class CodegenTestCase extends KtUsefulTestCase { } + protected void setCustomDefaultJvmTarget(CompilerConfiguration configuration) { + JvmTarget target = configuration.get(JVMConfigurationKeys.JVM_TARGET); + if (target == null && defaultJvmTarget != null) { + JvmTarget value = JvmTarget.fromString(defaultJvmTarget); + assert value != null : "Can't construct JvmTarget for " + defaultJvmTarget; + configuration.put(JVMConfigurationKeys.JVM_TARGET, value); + } + } + protected void compile( @NotNull List files, @Nullable File javaSourceDir, @@ -508,7 +522,6 @@ public abstract class CodegenTestCase extends KtUsefulTestCase { ArraysKt.filterNotNull(new File[] {javaSourceDir}), files ); - updateConfiguration(configuration); myEnvironment = KotlinCoreEnvironment.createForTests( getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES diff --git a/compiler/tests-common/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxCodegenTest.java b/compiler/tests-common/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxCodegenTest.java index b85dd20346b..7fdae7140e0 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxCodegenTest.java +++ b/compiler/tests-common/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxCodegenTest.java @@ -16,13 +16,14 @@ package org.jetbrains.kotlin.codegen.ir; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest; import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.JVMConfigurationKeys; public abstract class AbstractIrBlackBoxCodegenTest extends AbstractBlackBoxCodegenTest { @Override - protected void updateConfiguration(CompilerConfiguration configuration) { + protected void updateConfiguration(@NotNull CompilerConfiguration configuration) { configuration.put(JVMConfigurationKeys.IR, true); } }