From 747ab5fdb32257298aff862ad152677153c93891 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 28 Dec 2022 13:02:08 +0100 Subject: [PATCH] [FIR] get rid of FirFrontendFacadeForDiagnosticTests --- .../test/frontend/fir/FirFrontendFacade.kt | 4 +++- .../frontend/fir/FirSessionComponentRegistrar.kt | 16 ++++++++++++++++ .../runners/AbstractDiagnosticsNativeTest.kt | 4 +++- .../test/runners/AbstractFirDiagnosticTest.kt | 10 ++++++---- .../fir/plugin/runners/PluginPrototypeTests.kt | 3 +++ .../AbstractFirParcelizeDiagnosticTest.kt | 2 ++ 6 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirSessionComponentRegistrar.kt diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index 15589404401..d03e338ccea 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -74,7 +74,9 @@ open class FirFrontendFacade( } } - open fun registerExtraComponents(session: FirSession) {} + fun registerExtraComponents(session: FirSession) { + testServices.firSessionComponentRegistrar?.registerAdditionalComponent(session) + } override fun analyze(module: TestModule): FirOutputArtifact { val isMppSupported = module.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirSessionComponentRegistrar.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirSessionComponentRegistrar.kt new file mode 100644 index 00000000000..d6391eb526d --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirSessionComponentRegistrar.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2023 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.frontend.fir + +import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.test.services.TestService +import org.jetbrains.kotlin.test.services.TestServices + +abstract class FirSessionComponentRegistrar : TestService { + abstract fun registerAdditionalComponent(session: FirSession) +} + +val TestServices.firSessionComponentRegistrar: FirSessionComponentRegistrar? by TestServices.nullableTestServiceAccessor() \ No newline at end of file diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsNativeTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsNativeTest.kt index d6de7241118..23f1e7ea148 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsNativeTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsNativeTest.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHan import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor import org.jetbrains.kotlin.test.frontend.fir.DisableLazyResolveChecksAfterAnalysisChecker +import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.model.* @@ -93,7 +94,7 @@ abstract class AbstractFirNativeDiagnosticsTest : AbstractDiagnosticsNativeTestB get() = FrontendKinds.FIR override val frontend: Constructor> - get() = ::FirFrontendFacadeForDiagnosticTests + get() = ::FirFrontendFacade override fun handlersSetup(builder: TestConfigurationBuilder) { builder.firHandlersStep { @@ -110,6 +111,7 @@ abstract class AbstractFirNativeDiagnosticsTest : AbstractDiagnosticsNativeTestB override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) + builder.useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } builder.useAfterAnalysisCheckers( ::DisableLazyResolveChecksAfterAnalysisChecker, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt index d45c4ea7306..33c572a0020 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.FrontendFacade import org.jetbrains.kotlin.test.model.FrontendKinds -import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator @@ -38,6 +37,8 @@ import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSource abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { baseFirDiagnosticTestConfiguration() + useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } + useAfterAnalysisCheckers( ::DisableLazyResolveChecksAfterAnalysisChecker, ) @@ -72,7 +73,7 @@ fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside() { // `baseDir` is used in Kotlin plugin from IJ infra fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration( baseDir: String = ".", - frontendFacade: Constructor> = ::FirFrontendFacadeForDiagnosticTests + frontendFacade: Constructor> = ::FirFrontendFacade ) { globalDefaults { frontend = FrontendKinds.FIR @@ -172,11 +173,12 @@ fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration( } } -class FirFrontendFacadeForDiagnosticTests(testServices: TestServices) : FirFrontendFacade(testServices) { +class FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar : FirSessionComponentRegistrar() { private val lazyResolver = FirCompilerLazyDeclarationResolverWithPhaseChecking() @OptIn(org.jetbrains.kotlin.fir.SessionConfiguration::class) - override fun registerExtraComponents(session: FirSession) { + override fun registerAdditionalComponent(session: FirSession) { session.register(FirLazyDeclarationResolver::class, lazyResolver) } } + diff --git a/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/PluginPrototypeTests.kt b/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/PluginPrototypeTests.kt index 026a0b11afa..4ee6432ca5e 100644 --- a/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/PluginPrototypeTests.kt +++ b/plugins/fir-plugin-prototype/tests/org/jetbrains/kotlin/fir/plugin/runners/PluginPrototypeTests.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.frontend.fir.DisableLazyResolveChecksAfterAnalysisChecker import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolveContractViolationErrorHandler import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest +import org.jetbrains.kotlin.test.runners.FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest open class AbstractFirPluginBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTest() { @@ -35,6 +36,8 @@ fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() { ::DisableLazyResolveChecksAfterAnalysisChecker, ) + useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } + firHandlersStep { useHandlers( ::FirResolveContractViolationErrorHandler, diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt index e583137704c..ac7e5fb8696 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractFirParcelizeDiagnosticTest.kt @@ -14,12 +14,14 @@ import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor import org.jetbrains.kotlin.test.frontend.fir.handlers.FirIdenticalChecker import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolveContractViolationErrorHandler import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest +import org.jetbrains.kotlin.test.runners.FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { baseFirDiagnosticTestConfiguration() + useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } defaultDirectives { +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES