diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt index ffc57f533ee..48a4fd1da57 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt @@ -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, + environmentConfigurators: List, targetBackend: TargetBackend? ) { val apiVersion = directives.singleOrZeroValue(LanguageSettingsDirectives.API_VERSION) diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/EnvironmentConfigurator.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/AbstractEnvironmentConfigurator.kt similarity index 81% rename from compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/EnvironmentConfigurator.kt rename to compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/AbstractEnvironmentConfigurator.kt index babd8e781d4..0b2df683380 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/EnvironmentConfigurator.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/services/AbstractEnvironmentConfigurator.kt @@ -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, 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, Any?> { return emptyMap() } - open fun registerCompilerExtensions(project: Project) {} + override fun registerCompilerExtensions(project: Project, module: TestModule) {} } class DirectiveToConfigurationKeyExtractor { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt index 7b21ffbcbf5..e3a61d39534 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt @@ -28,7 +28,7 @@ class TestConfigurationBuilder { private val sourcePreprocessors: MutableList> = mutableListOf() private val additionalMetaInfoProcessors: MutableList> = mutableListOf() - private val environmentConfigurators: MutableList> = mutableListOf() + private val environmentConfigurators: MutableList> = mutableListOf() private val preAnalysisHandlers: MutableList> = mutableListOf() private val additionalSourceProviders: MutableList> = mutableListOf() @@ -46,7 +46,7 @@ class TestConfigurationBuilder { private val configurationsByNegativeTestDataCondition: MutableList Unit>> = mutableListOf() private val additionalServices: MutableList = mutableListOf() - private var compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)? = null + private var compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)? = null private var runtimeClasspathProviders: MutableList> = mutableListOf() lateinit var testInfo: KotlinTestInfo @@ -157,7 +157,7 @@ class TestConfigurationBuilder { this.directives += directives } - fun useConfigurators(vararg environmentConfigurators: Constructor) { + fun useConfigurators(vararg environmentConfigurators: Constructor) { this.environmentConfigurators += environmentConfigurators } @@ -184,7 +184,7 @@ class TestConfigurationBuilder { } @TestInfrastructureInternals - fun useCustomCompilerConfigurationProvider(provider: (Disposable, List) -> CompilerConfigurationProvider) { + fun useCustomCompilerConfigurationProvider(provider: (Disposable, List) -> CompilerConfigurationProvider) { compilerConfigurationProvider = provider } @@ -256,7 +256,7 @@ class TestConfigurationBuilder { get() = builder.sourcePreprocessors val additionalMetaInfoProcessors: List> get() = builder.additionalMetaInfoProcessors - val environmentConfigurators: List> + val environmentConfigurators: List> get() = builder.environmentConfigurators val preAnalysisHandlers: List> get() = builder.preAnalysisHandlers @@ -286,7 +286,7 @@ class TestConfigurationBuilder { val additionalServices: List get() = builder.additionalServices - val compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)? + val compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)? get() = builder.compilerConfigurationProvider val runtimeClasspathProviders: List> get() = builder.runtimeClasspathProviders diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt index 8bab1f6206e..6e16b68461b 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/impl/TestConfigurationImpl.kt @@ -30,7 +30,7 @@ class TestConfigurationImpl( sourcePreprocessors: List>, additionalMetaInfoProcessors: List>, - environmentConfigurators: List>, + environmentConfigurators: List>, additionalSourceProviders: List>, preAnalysisHandlers: List>, @@ -38,7 +38,7 @@ class TestConfigurationImpl( metaTestConfigurators: List>, afterAnalysisCheckers: List>, - compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)?, + compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)?, runtimeClasspathProviders: List>, override val metaInfoHandlerEnabled: Boolean, @@ -70,7 +70,7 @@ class TestConfigurationImpl( } } - private val environmentConfigurators: List = + private val environmentConfigurators: List = environmentConfigurators .map { it.invoke(testServices) } .also { it.registerDirectivesAndServices() } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt index f24a46e7ace..d5e9703a8eb 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt @@ -61,7 +61,7 @@ val TestServices.compilerConfigurationProvider: CompilerConfigurationProvider by open class CompilerConfigurationProviderImpl( override val testRootDisposable: Disposable, - val configurators: List + val configurators: List ) : CompilerConfigurationProvider() { private val cache: MutableMap = mutableMapOf() @@ -93,7 +93,7 @@ open class CompilerConfigurationProviderImpl( projectEnv, initialConfiguration, configFiles - ).also { configurators.forEach { it.registerCompilerExtensions(project) } } + ).also { configurators.forEach { it.registerCompilerExtensions(project, module) } } } @TestInfrastructureInternals diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/impl/ModuleStructureExtractorImpl.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/impl/ModuleStructureExtractorImpl.kt index 723821ea1f7..78214392f8b 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/impl/ModuleStructureExtractorImpl.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/impl/ModuleStructureExtractorImpl.kt @@ -42,7 +42,7 @@ class ModuleStructureExtractorImpl( testServices: TestServices, additionalSourceProviders: List, moduleStructureTransformers: List, - private val environmentConfigurators: List + private val environmentConfigurators: List ) : ModuleStructureExtractor(testServices, additionalSourceProviders, moduleStructureTransformers) { companion object { private val allowedExtensionsForFiles = listOf(".kt", ".kts", ".java", ".js", ".mjs") diff --git a/plugins/atomicfu/atomicfu-compiler/test/org/jetbrains/kotlinx/atomicfu/AbstractAtomicfuJsIrTest.kt b/plugins/atomicfu/atomicfu-compiler/test/org/jetbrains/kotlinx/atomicfu/AbstractAtomicfuJsIrTest.kt index e4008ef3a31..e25162b7b84 100644 --- a/plugins/atomicfu/atomicfu-compiler/test/org/jetbrains/kotlinx/atomicfu/AbstractAtomicfuJsIrTest.kt +++ b/plugins/atomicfu/atomicfu-compiler/test/org/jetbrains/kotlinx/atomicfu/AbstractAtomicfuJsIrTest.kt @@ -39,7 +39,7 @@ class AtomicfuRuntimeClasspathProvider(testServices: TestServices) : RuntimeClas } class AtomicfuEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) { - override fun registerCompilerExtensions(project: Project) { + override fun registerCompilerExtensions(project: Project, module: TestModule) { IrGenerationExtension.registerExtension(project, AtomicfuLoweringExtension()) } } \ No newline at end of file diff --git a/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt b/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt index be056ffc907..5d259607c31 100644 --- a/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt +++ b/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/services/ExtensionRegistrarConfigurator.kt @@ -10,11 +10,12 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.plugin.FirPluginPrototypeExtensionRegistrar import org.jetbrains.kotlin.ir.plugin.GeneratedDeclarationsIrBodyFiller +import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.TestServices class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) { - override fun registerCompilerExtensions(project: Project) { + override fun registerCompilerExtensions(project: Project, module: TestModule) { FirExtensionRegistrar.registerExtension(project, FirPluginPrototypeExtensionRegistrar()) IrGenerationExtension.registerExtension(project, GeneratedDeclarationsIrBodyFiller()) } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt index 20108ef6dea..06a1d044847 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt @@ -58,7 +58,7 @@ internal fun TestConfigurationBuilder.configureForKotlinxSerialization(libraries configuration.addJvmClasspathRoots(librariesPaths) } - override fun registerCompilerExtensions(project: Project) { + override fun registerCompilerExtensions(project: Project, module: TestModule) { SerializationComponentRegistrar.registerExtensions(project) } } diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt index 4d4d6690598..513031e87a6 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt @@ -31,7 +31,7 @@ class ParcelizeEnvironmentConfigurator( configuration.addJvmClasspathRoots(listOf(runtimeLibrary, androidExtensionsRuntimeLibrary, androidApiJar)) } - override fun registerCompilerExtensions(project: Project) { + override fun registerCompilerExtensions(project: Project, module: TestModule) { if (useFirExtension) { FirExtensionRegistrar.registerExtension(project, FirParcelizeExtensionRegistrar()) IrGenerationExtension.registerExtension(project, ParcelizeFirIrGeneratorExtension()) diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt index 0c9f42f6d8f..29bf95f08cf 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt @@ -11,11 +11,12 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension +import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.TestServices class SerializableLikeExtensionProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) { - override fun registerCompilerExtensions(project: Project) { + override fun registerCompilerExtensions(project: Project, module: TestModule) { SyntheticResolveExtension.registerExtension(project, SerializableLike()) }