Add TargetBackend.isIR, simplify JVM IR test configuration

This commit is contained in:
Alexander Udalov
2019-11-08 17:21:00 +01:00
parent ab65a6bc6c
commit ce09be3f59
21 changed files with 33 additions and 113 deletions
@@ -41,7 +41,7 @@ abstract public class AbstractGenerateNotNullAssertionsTest extends CodegenTestC
configuration.put(JVMConfigurationKeys.DISABLE_CALL_ASSERTIONS, disableCallAssertions); configuration.put(JVMConfigurationKeys.DISABLE_CALL_ASSERTIONS, disableCallAssertions);
configuration.put(JVMConfigurationKeys.DISABLE_PARAM_ASSERTIONS, disableParamAssertions); configuration.put(JVMConfigurationKeys.DISABLE_PARAM_ASSERTIONS, disableParamAssertions);
updateConfiguration(configuration); configuration.put(JVMConfigurationKeys.IR, getBackend().isIR());
myEnvironment = myEnvironment =
KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
@@ -39,7 +39,6 @@ public abstract class AbstractScriptCodegenTest extends CodegenTestCase {
@Override @Override
protected void updateConfiguration(@NotNull CompilerConfiguration configuration) { protected void updateConfiguration(@NotNull CompilerConfiguration configuration) {
loadScriptingPlugin(configuration); loadScriptingPlugin(configuration);
super.updateConfiguration(configuration);
} }
@Override @Override
@@ -140,6 +140,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
@NotNull List<TestFile> testFilesWithConfigurationDirectives @NotNull List<TestFile> testFilesWithConfigurationDirectives
) { ) {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource); CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource);
configuration.put(JVMConfigurationKeys.IR, getBackend().isIR());
updateConfigurationByDirectivesInTestFiles(testFilesWithConfigurationDirectives, configuration, coroutinesPackage); updateConfigurationByDirectivesInTestFiles(testFilesWithConfigurationDirectives, configuration, coroutinesPackage);
updateConfiguration(configuration); updateConfiguration(configuration);
@@ -1,12 +1,12 @@
/*
* Copyright 2010-2019 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.codegen.debugInformation package org.jetbrains.kotlin.codegen.debugInformation
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.config.JVMConfigurationKeys
abstract class AbstractIrLocalVariableTest : AbstractLocalVariableTest() { abstract class AbstractIrLocalVariableTest : AbstractLocalVariableTest() {
override fun getBackend(): TargetBackend = TargetBackend.JVM_IR
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
} }
@@ -5,13 +5,8 @@
package org.jetbrains.kotlin.codegen.debugInformation package org.jetbrains.kotlin.codegen.debugInformation
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.config.JVMConfigurationKeys
abstract class AbstractIrSteppingTest : AbstractSteppingTest() { abstract class AbstractIrSteppingTest : AbstractSteppingTest() {
override fun getBackend(): TargetBackend = TargetBackend.JVM_IR
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
} }
@@ -6,15 +6,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractBlackBoxAgainstJavaCodegenTest import org.jetbrains.kotlin.codegen.AbstractBlackBoxAgainstJavaCodegenTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxAgainstJavaCodegenTest() { abstract class AbstractIrBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxAgainstJavaCodegenTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -17,14 +17,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrBlackBoxCodegenTest : AbstractBlackBoxCodegenTest() { abstract class AbstractIrBlackBoxCodegenTest : AbstractBlackBoxCodegenTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -17,11 +17,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrBlackBoxInlineCodegenTest : AbstractBlackBoxCodegenTest() { abstract class AbstractIrBlackBoxInlineCodegenTest : AbstractBlackBoxCodegenTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -6,11 +6,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest import org.jetbrains.kotlin.codegen.AbstractBytecodeTextTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrBytecodeTextTest : AbstractBytecodeTextTest() { abstract class AbstractIrBytecodeTextTest : AbstractBytecodeTextTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -7,18 +7,11 @@ package org.jetbrains.kotlin.codegen.ir
import com.intellij.openapi.util.Comparing import com.intellij.openapi.util.Comparing
import org.jetbrains.kotlin.codegen.AbstractCheckLocalVariablesTableTest import org.jetbrains.kotlin.codegen.AbstractCheckLocalVariablesTableTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.junit.ComparisonFailure import org.junit.ComparisonFailure
import java.io.File import java.io.File
abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariablesTableTest() { abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariablesTableTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun doCompare( override fun doCompare(
testFile: File, testFile: File,
text: String, text: String,
@@ -6,11 +6,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractCompileKotlinAgainstInlineKotlinTest import org.jetbrains.kotlin.codegen.AbstractCompileKotlinAgainstInlineKotlinTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrCompileKotlinAgainstInlineKotlinTest : AbstractCompileKotlinAgainstInlineKotlinTest() { abstract class AbstractIrCompileKotlinAgainstInlineKotlinTest : AbstractCompileKotlinAgainstInlineKotlinTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -6,11 +6,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractCompileKotlinAgainstKotlinTest import org.jetbrains.kotlin.codegen.AbstractCompileKotlinAgainstKotlinTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrCompileKotlinAgainstKotlinTest : AbstractCompileKotlinAgainstKotlinTest() { abstract class AbstractIrCompileKotlinAgainstKotlinTest : AbstractCompileKotlinAgainstKotlinTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -6,8 +6,6 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.AbstractLineNumberTest import org.jetbrains.kotlin.codegen.AbstractLineNumberTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
@@ -18,11 +16,6 @@ import org.jetbrains.org.objectweb.asm.Opcodes
import java.io.File import java.io.File
abstract class AbstractIrLineNumberTest : AbstractLineNumberTest() { abstract class AbstractIrLineNumberTest : AbstractLineNumberTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun compareCustom(psiFile: KtFile, wholeFile: File) { override fun compareCustom(psiFile: KtFile, wholeFile: File) {
val fileText = psiFile.text val fileText = psiFile.text
val expectedLineNumbers = normalize( val expectedLineNumbers = normalize(
@@ -6,14 +6,8 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.codegen.flags.AbstractWriteFlagsTest import org.jetbrains.kotlin.codegen.flags.AbstractWriteFlagsTest
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrWriteFlagsTest : AbstractWriteFlagsTest() { abstract class AbstractIrWriteFlagsTest : AbstractWriteFlagsTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -5,15 +5,9 @@
package org.jetbrains.kotlin.codegen.ir package org.jetbrains.kotlin.codegen.ir
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.jvm.compiler.AbstractWriteSignatureTest import org.jetbrains.kotlin.jvm.compiler.AbstractWriteSignatureTest
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrWriteSignatureTest : AbstractWriteSignatureTest() { abstract class AbstractIrWriteSignatureTest : AbstractWriteSignatureTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -6,14 +6,15 @@
package org.jetbrains.kotlin.test package org.jetbrains.kotlin.test
enum class TargetBackend( enum class TargetBackend(
val isIR: Boolean,
private val compatibleWithTargetBackend: TargetBackend? = null private val compatibleWithTargetBackend: TargetBackend? = null
) { ) {
ANY, ANY(false),
JVM, JVM(false),
JVM_IR(JVM), JVM_IR(true, JVM),
JS, JS(false),
JS_IR(JS), JS_IR(true, JS),
WASM; WASM(true);
val compatibleWith get() = compatibleWithTargetBackend ?: ANY val compatibleWith get() = compatibleWithTargetBackend ?: ANY
} }
@@ -5,18 +5,16 @@
package org.jetbrains.kotlin.codegen.ir; package org.jetbrains.kotlin.codegen.ir;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.codegen.AbstractGenerateNotNullAssertionsTest; import org.jetbrains.kotlin.codegen.AbstractGenerateNotNullAssertionsTest;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
public class IrGenerateNotNullAssertionsTest extends AbstractGenerateNotNullAssertionsTest { public class IrGenerateNotNullAssertionsTest extends AbstractGenerateNotNullAssertionsTest {
@Override
public void updateConfiguration(@NotNull CompilerConfiguration configuration) {
configuration.put(JVMConfigurationKeys.IR, true);
}
public void testNoAssertionsForKotlinFromBinary() { public void testNoAssertionsForKotlinFromBinary() {
doTestNoAssertionsForKotlinFromBinary("noAssertionsForKotlin.kt", "noAssertionsForKotlinMain.kt"); doTestNoAssertionsForKotlinFromBinary("noAssertionsForKotlin.kt", "noAssertionsForKotlinMain.kt");
} }
@Override
protected TargetBackend getBackend() {
return TargetBackend.JVM_IR;
}
} }
@@ -54,7 +54,7 @@ fun createCommonCoroutinesTestMethodModels(
targetBackend: TargetBackend, targetBackend: TargetBackend,
skipIgnored: Boolean skipIgnored: Boolean
): Collection<MethodModel> { ): Collection<MethodModel> {
return if (targetBackend == TargetBackend.JS_IR || targetBackend == TargetBackend.JVM_IR) return if (targetBackend.isIR)
listOf( listOf(
CoroutinesTestModel( CoroutinesTestModel(
rootDir, rootDir,
@@ -5,15 +5,8 @@
package org.jetbrains.kotlin.kapt3.test package org.jetbrains.kotlin.kapt3.test
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractIrKotlinKapt3IntegrationTest : AbstractKotlinKapt3IntegrationTest() { abstract class AbstractIrKotlinKapt3IntegrationTest : AbstractKotlinKapt3IntegrationTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -5,8 +5,6 @@
package org.jetbrains.kotlin.kapt3.test package org.jetbrains.kotlin.kapt3.test
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
/* /*
@@ -14,19 +12,9 @@ Currently Kapt3 only works with the old backend. To enable IR, modify the isIrBa
*/ */
abstract class AbstractIrClassFileToSourceStubConverterTest : AbstractClassFileToSourceStubConverterTest() { abstract class AbstractIrClassFileToSourceStubConverterTest : AbstractClassFileToSourceStubConverterTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
abstract class AbstractIrKotlinKaptContextTest : AbstractKotlinKaptContextTest() { abstract class AbstractIrKotlinKaptContextTest : AbstractKotlinKaptContextTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
super.updateConfiguration(configuration)
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun getBackend() = TargetBackend.JVM_IR override fun getBackend() = TargetBackend.JVM_IR
} }
@@ -5,12 +5,10 @@
package org.jetbrains.kotlinx.serialization package org.jetbrains.kotlinx.serialization
import junit.framework.TestCase
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest
import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar
import java.io.File import java.io.File
@@ -21,9 +19,7 @@ abstract class AbstractSerializationIrBytecodeListingTest : AbstractAsmLikeInstr
return wholeFile.nameWithoutExtension + ".ir.txt" return wholeFile.nameWithoutExtension + ".ir.txt"
} }
override fun updateConfiguration(configuration: CompilerConfiguration) { override fun getBackend(): TargetBackend = TargetBackend.JVM_IR
configuration.put(JVMConfigurationKeys.IR, true)
}
override fun setupEnvironment(environment: KotlinCoreEnvironment) { override fun setupEnvironment(environment: KotlinCoreEnvironment) {
SerializationComponentRegistrar.registerExtensions(environment.project) SerializationComponentRegistrar.registerExtensions(environment.project)