[FIR] refactoring: extract registration of lazy declaration resolve contract checking to a separate function in tests

This commit is contained in:
Ilya Kirillov
2022-12-28 13:06:09 +01:00
committed by Space Team
parent 747ab5fdb3
commit a55b4a977b
5 changed files with 29 additions and 52 deletions
@@ -51,3 +51,7 @@ fun <T, R> ((TestServices, T) -> R).bind(value: T): Constructor<R> {
fun <T1, T2, R> ((TestServices, T1, T2) -> R).bind(value1: T1, value2: T2): Constructor<R> {
return { this.invoke(it, value1, value2) }
}
fun <R> (() -> R).coerce(): Constructor<R> {
return { this.invoke() }
}
@@ -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()
@@ -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<FirSessionComponentRegistrar>(::FirLazyDeclarationResolverWithPhaseCheckingSessionComponentRegistrar.coerce())
)
useAfterAnalysisCheckers(
::DisableLazyResolveChecksAfterAnalysisChecker,
)
configureFirHandlersStep {
useHandlers(
::FirResolveContractViolationErrorHandler,
)
}
}
@@ -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
@@ -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)
}
}