[Test] Add ability to provide additional analysis flags in EnvironmentConfigurator

This commit is contained in:
Dmitriy Novozhilov
2020-12-22 12:20:39 +03:00
committed by TeamCityServer
parent c4691de72d
commit e287742842
4 changed files with 27 additions and 14 deletions
@@ -10,6 +10,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.util.LANGUAGE_FEATURE_PATTERN
import org.jetbrains.kotlin.utils.addToStdlib.runIf
@@ -48,7 +49,7 @@ class LanguageVersionSettingsBuilder {
analysisFlags[flag] = value
}
fun configureUsingDirectives(directives: RegisteredDirectives) {
fun configureUsingDirectives(directives: RegisteredDirectives, environmentConfigurators: List<EnvironmentConfigurator>) {
val apiVersion = directives.singleOrZeroValue(LanguageSettingsDirectives.API_VERSION)
if (apiVersion != null) {
this.apiVersion = apiVersion
@@ -74,6 +75,12 @@ class LanguageVersionSettingsBuilder {
analysisFlags.forEach { withFlag(it.first, it.second) }
environmentConfigurators.forEach {
it.provideAdditionalAnalysisFlags(directives).entries.forEach { (flag, value) ->
withFlag(flag, value)
}
}
directives[LanguageSettingsDirectives.LANGUAGE].forEach { parseLanguageFeature(it) }
}
@@ -6,8 +6,8 @@
package org.jetbrains.kotlin.test.services
import com.intellij.mock.MockProject
import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.test.directives.model.ComposedRegisteredDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.model.TestModule
@@ -23,4 +23,8 @@ abstract class EnvironmentConfigurator(protected val testServices: TestServices)
get() = testServices.moduleStructure
open fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule, project: MockProject) {}
open fun provideAdditionalAnalysisFlags(directives: RegisteredDirectives): Map<AnalysisFlag<*>, Any?> {
return emptyMap()
}
}