[Tests] FIR support in JUnit 3 tests, port necessary subclasses

^KT-64404 Fixed
^KT-64438 Fixed
^KT-64407 Fixed
This commit is contained in:
Iaroslav Postovalov
2024-01-15 18:09:34 +01:00
committed by Space Team
parent e69d6d2d05
commit 9a2e4c6b41
66 changed files with 5681 additions and 273 deletions
@@ -9,11 +9,12 @@ import org.jetbrains.kotlin.checkers.ENABLE_JVM_PREVIEW
import org.jetbrains.kotlin.checkers.parseLanguageVersionSettings
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.test.testFramework.FrontendBackendConfiguration
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
abstract class KotlinBaseTest<F : KotlinBaseTest.TestFile> : KtUsefulTestCase() {
abstract class KotlinBaseTest<F : KotlinBaseTest.TestFile> : KtUsefulTestCase(), FrontendBackendConfiguration {
@Throws(Exception::class)
override fun setUp() {
super.setUp()
@@ -51,26 +52,25 @@ abstract class KotlinBaseTest<F : KotlinBaseTest.TestFile> : KtUsefulTestCase()
return Companion.extractConfigurationKind(files)
}
protected open fun updateConfiguration(configuration: CompilerConfiguration) {}
protected open fun updateConfiguration(configuration: CompilerConfiguration) {
configureIrFir(configuration)
}
protected open fun setupEnvironment(environment: KotlinCoreEnvironment) {}
protected open fun parseDirectivesPerFiles() = false
protected open val backend = TargetBackend.ANY
protected open fun configureTestSpecific(configuration: CompilerConfiguration, testFiles: List<TestFile>) {}
protected fun createConfiguration(
kind: ConfigurationKind,
jdkKind: TestJdkKind,
backend: TargetBackend,
classpath: List<File?>,
javaSource: List<File?>,
testFilesWithConfigurationDirectives: List<TestFile>
): CompilerConfiguration {
val configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource)
configuration.put(JVMConfigurationKeys.IR, backend.isIR)
updateConfigurationByDirectivesInTestFiles(
testFilesWithConfigurationDirectives,
configuration,
@@ -0,0 +1,30 @@
/*
* Copyright 2010-2024 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.testFramework
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend
interface FrontendBackendConfiguration {
val useFir: Boolean
get() = false
val firParser: FirParser
get() = FirParser.Psi
val backend
get() = TargetBackend.ANY
fun configureIrFir(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, backend.isIR)
configuration.put(CommonConfigurationKeys.USE_FIR, useFir)
when (firParser) {
FirParser.LightTree -> configuration.put(CommonConfigurationKeys.USE_LIGHT_TREE, true)
FirParser.Psi -> {}
}
}
}