[LL FIR] AbstractLLFirBlackBoxCodegenBasedTestBase: unify logic

^KT-66232
This commit is contained in:
Dmitrii Gridin
2024-03-01 16:09:53 +01:00
committed by Space Team
parent dd0d2168fc
commit 204465132f
3 changed files with 43 additions and 36 deletions
@@ -7,15 +7,15 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.base
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyNonReversedTestSuppressor import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyNonReversedTestSuppressor
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithoutPreresolve import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithoutPreresolve
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { abstract class AbstractLLFirBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() {
override fun configureTest(builder: TestConfigurationBuilder) { override fun facade(): Constructor<LowLevelFirFrontendFacade> {
with(builder) { return ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)
facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
baseConfiguration()
useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor)
}
} }
override fun facadeSpecificSuppressor(): (TestServices) -> AfterAnalysisChecker = ::LLFirOnlyNonReversedTestSuppressor
} }
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractLowLevelCompilerBasedTest import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractLowLevelCompilerBasedTest
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.TestConfiguration import org.jetbrains.kotlin.test.TestConfiguration
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDumpHandler import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDumpHandler
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolvedTypesVerifier import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolvedTypesVerifier
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirScopeDumpHandler import org.jetbrains.kotlin.test.frontend.fir.handlers.FirScopeDumpHandler
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.runners.codegen.baseFirBlackBoxCodegenTestDirectivesConfiguration import org.jetbrains.kotlin.test.runners.codegen.baseFirBlackBoxCodegenTestDirectivesConfiguration
import org.jetbrains.kotlin.test.runners.codegen.configureModernJavaWhenNeeded import org.jetbrains.kotlin.test.runners.codegen.configureModernJavaWhenNeeded
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
@@ -32,31 +34,37 @@ import java.io.File
* This test case does not interact with the backend at all. * This test case does not interact with the backend at all.
*/ */
abstract class AbstractLLFirBlackBoxCodegenBasedTestBase : AbstractLowLevelCompilerBasedTest() { abstract class AbstractLLFirBlackBoxCodegenBasedTestBase : AbstractLowLevelCompilerBasedTest() {
protected fun TestConfigurationBuilder.baseConfiguration() { abstract fun facade(): Constructor<LowLevelFirFrontendFacade>
baseFirBlackBoxCodegenTestDirectivesConfiguration() abstract fun facadeSpecificSuppressor(): Constructor<AfterAnalysisChecker>
configureModernJavaWhenNeeded()
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmEnvironmentConfigurator,
)
useAdditionalSourceProviders( override fun configureTest(builder: TestConfigurationBuilder) {
::AdditionalDiagnosticsSourceFilesProvider, with(builder) {
::CoroutineHelpersSourceFilesProvider, facadeStep(facade())
::CodegenHelpersSourceFilesProvider, baseFirBlackBoxCodegenTestDirectivesConfiguration()
) configureModernJavaWhenNeeded()
useConfigurators(
firHandlersStep { ::CommonEnvironmentConfigurator,
useHandlers( ::JvmEnvironmentConfigurator,
::FirDiagnosticsHandler,
::FirDumpHandler,
::FirScopeDumpHandler,
::FirCfgDumpHandler,
::FirResolvedTypesVerifier,
) )
}
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor) useAdditionalSourceProviders(
::AdditionalDiagnosticsSourceFilesProvider,
::CoroutineHelpersSourceFilesProvider,
::CodegenHelpersSourceFilesProvider,
)
firHandlersStep {
useHandlers(
::FirDiagnosticsHandler,
::FirDumpHandler,
::FirScopeDumpHandler,
::FirCfgDumpHandler,
::FirResolvedTypesVerifier,
)
}
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor, facadeSpecificSuppressor())
}
} }
override fun shouldSkipTest(filePath: String, configuration: TestConfiguration): Boolean { override fun shouldSkipTest(filePath: String, configuration: TestConfiguration): Boolean {
@@ -7,15 +7,14 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.base
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyReversedTestSuppressor import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyReversedTestSuppressor
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirReversedBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { abstract class AbstractLLFirReversedBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() {
override fun configureTest(builder: TestConfigurationBuilder) { override fun facade(): Constructor<LowLevelFirFrontendFacade> {
with(builder) { return ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)
facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder))
baseConfiguration()
useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor)
}
} }
override fun facadeSpecificSuppressor(): Constructor<AfterAnalysisChecker> = ::LLFirOnlyReversedTestSuppressor
} }