[FIR] get rid of FirFrontendFacadeForDiagnosticTests

This commit is contained in:
Ilya Kirillov
2022-12-28 13:02:08 +01:00
committed by Space Team
parent 40f7360694
commit 747ab5fdb3
6 changed files with 33 additions and 6 deletions
@@ -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)
@@ -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()
@@ -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<FrontendFacade<FirOutputArtifact>>
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,
@@ -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<FrontendFacade<FirOutputArtifact>> = ::FirFrontendFacadeForDiagnosticTests
frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>> = ::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)
}
}
@@ -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,
@@ -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