FIR: Split EnvironmentConfigurator to an interface and abstract class

It is needed to make it easier to write wrappers for configurators
This commit is contained in:
Roman Golyshev
2022-02-21 15:41:42 +03:00
parent 1a77643ad0
commit ffcbc583d0
11 changed files with 33 additions and 23 deletions
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.directives.model.singleOrZeroValue
import org.jetbrains.kotlin.test.services.DefaultsDsl
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AbstractEnvironmentConfigurator
import org.jetbrains.kotlin.test.util.LANGUAGE_FEATURE_PATTERN
import org.jetbrains.kotlin.utils.addToStdlib.runIf
@@ -52,7 +52,7 @@ class LanguageVersionSettingsBuilder {
fun configureUsingDirectives(
directives: RegisteredDirectives,
environmentConfigurators: List<EnvironmentConfigurator>,
environmentConfigurators: List<AbstractEnvironmentConfigurator>,
targetBackend: TargetBackend?
) {
val apiVersion = directives.singleOrZeroValue(LanguageSettingsDirectives.API_VERSION)
@@ -17,13 +17,21 @@ import org.jetbrains.kotlin.test.directives.model.singleOrZeroValue
import org.jetbrains.kotlin.test.model.ServicesAndDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
abstract class EnvironmentConfigurator(protected val testServices: TestServices) : ServicesAndDirectivesContainer {
abstract class AbstractEnvironmentConfigurator : ServicesAndDirectivesContainer {
abstract fun configureCompileConfigurationWithAdditionalConfigurationKeys(configuration: CompilerConfiguration, module: TestModule)
abstract fun provideAdditionalAnalysisFlags(directives: RegisteredDirectives, languageVersion: LanguageVersion): Map<AnalysisFlag<*>, Any?>
abstract fun registerCompilerExtensions(project: Project, module: TestModule)
}
abstract class EnvironmentConfigurator(protected val testServices: TestServices) : AbstractEnvironmentConfigurator() {
protected val moduleStructure: TestModuleStructure
get() = testServices.moduleStructure
protected open fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {}
fun configureCompileConfigurationWithAdditionalConfigurationKeys(
final override fun configureCompileConfigurationWithAdditionalConfigurationKeys(
configuration: CompilerConfiguration,
module: TestModule,
) {
@@ -35,14 +43,14 @@ abstract class EnvironmentConfigurator(protected val testServices: TestServices)
open fun DirectiveToConfigurationKeyExtractor.provideConfigurationKeys() {}
open fun provideAdditionalAnalysisFlags(
override fun provideAdditionalAnalysisFlags(
directives: RegisteredDirectives,
languageVersion: LanguageVersion
): Map<AnalysisFlag<*>, Any?> {
return emptyMap()
}
open fun registerCompilerExtensions(project: Project) {}
override fun registerCompilerExtensions(project: Project, module: TestModule) {}
}
class DirectiveToConfigurationKeyExtractor {