From a55b4a977b9bccf7e69f167fb687fb0b029a02d9 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 28 Dec 2022 13:06:09 +0100 Subject: [PATCH] [FIR] refactoring: extract registration of lazy declaration resolve contract checking to a separate function in tests --- .../kotlin/test/TestConfiguration.kt | 4 +++ .../runners/AbstractDiagnosticsNativeTest.kt | 14 +-------- .../test/runners/AbstractFirDiagnosticTest.kt | 31 ++++++++++++------- .../plugin/runners/PluginPrototypeTests.kt | 17 ++-------- .../AbstractFirParcelizeDiagnosticTest.kt | 15 ++------- 5 files changed, 29 insertions(+), 52 deletions(-) diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestConfiguration.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestConfiguration.kt index 95ce0afd978..b21012685cb 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestConfiguration.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/TestConfiguration.kt @@ -51,3 +51,7 @@ fun ((TestServices, T) -> R).bind(value: T): Constructor { fun ((TestServices, T1, T2) -> R).bind(value1: T1, value2: T2): Constructor { return { this.invoke(it, value1, value2) } } + +fun (() -> R).coerce(): Constructor { + return { this.invoke() } +} 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 23f1e7ea148..b7355c1ce25 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 @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler 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.* @@ -111,18 +110,7 @@ abstract class AbstractFirNativeDiagnosticsTest : AbstractDiagnosticsNativeTestB override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) - builder.useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } - - builder.useAfterAnalysisCheckers( - ::DisableLazyResolveChecksAfterAnalysisChecker, - ) - - builder.firHandlersStep { - useHandlers( - ::FirResolveContractViolationErrorHandler, - ) - } - + builder.enableLazyResolvePhaseChecking() builder.forTestsMatching("compiler/testData/diagnostics/*") { configurationForClassicAndFirTestsAlongside() 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 33c572a0020..9c302d4d01b 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 @@ -13,7 +13,9 @@ import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.bind import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.builders.configureFirHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep +import org.jetbrains.kotlin.test.coerce import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE @@ -31,23 +33,14 @@ import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator +import org.jetbrains.kotlin.test.services.service import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { baseFirDiagnosticTestConfiguration() - useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } - - useAfterAnalysisCheckers( - ::DisableLazyResolveChecksAfterAnalysisChecker, - ) - - firHandlersStep { - useHandlers( - ::FirResolveContractViolationErrorHandler, - ) - } + enableLazyResolvePhaseChecking() } } @@ -182,3 +175,19 @@ class FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar : Fir } } +fun TestConfigurationBuilder.enableLazyResolvePhaseChecking() { + useAdditionalServices( + service(::FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar.coerce()) + ) + + useAfterAnalysisCheckers( + ::DisableLazyResolveChecksAfterAnalysisChecker, + ) + + configureFirHandlersStep { + useHandlers( + ::FirResolveContractViolationErrorHandler, + ) + } +} + 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 4ee6432ca5e..a7d6e33c1c1 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 @@ -8,14 +8,11 @@ package org.jetbrains.kotlin.fir.plugin.runners import org.jetbrains.kotlin.fir.plugin.services.ExtensionRegistrarConfigurator import org.jetbrains.kotlin.fir.plugin.services.PluginAnnotationsProvider import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES 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 +import org.jetbrains.kotlin.test.runners.enableLazyResolvePhaseChecking open class AbstractFirPluginBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTest() { override fun configure(builder: TestConfigurationBuilder) { @@ -32,17 +29,7 @@ abstract class AbstractFirPluginDiagnosticTest : AbstractFirDiagnosticTest() { } fun TestConfigurationBuilder.commonFirWithPluginFrontendConfiguration() { - useAfterAnalysisCheckers( - ::DisableLazyResolveChecksAfterAnalysisChecker, - ) - - useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } - - firHandlersStep { - useHandlers( - ::FirResolveContractViolationErrorHandler, - ) - } + enableLazyResolvePhaseChecking() defaultDirectives { +ENABLE_PLUGIN_PHASES 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 ac7e5fb8696..ac442a690d2 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 @@ -7,21 +7,18 @@ package org.jetbrains.kotlin.parcelize.test.runners import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives -import org.jetbrains.kotlin.test.frontend.fir.DisableLazyResolveChecksAfterAnalysisChecker 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.runners.enableLazyResolvePhaseChecking import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() { override fun TestConfigurationBuilder.configuration() { baseFirDiagnosticTestConfiguration() - useAdditionalService { FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar() } + enableLazyResolvePhaseChecking() defaultDirectives { +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES @@ -32,16 +29,8 @@ abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() useAfterAnalysisCheckers( ::FirIdenticalChecker, ::FirFailingTestSuppressor, - ::DisableLazyResolveChecksAfterAnalysisChecker, ) - firHandlersStep { - useHandlers( - ::FirResolveContractViolationErrorHandler, - ) - } - - useMetaTestConfigurators(::FirOldFrontendMetaConfigurator) } }