From 204465132f25dce76c237b425addcf1b9dce60a7 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 1 Mar 2024 16:09:53 +0100 Subject: [PATCH] [LL FIR] AbstractLLFirBlackBoxCodegenBasedTestBase: unify logic ^KT-66232 --- .../AbstractLLFirBlackBoxCodegenBasedTest.kt | 14 ++--- ...stractLLFirBlackBoxCodegenBasedTestBase.kt | 52 +++++++++++-------- ...ctLLFirReversedBlackBoxCodegenBasedTest.kt | 13 +++-- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTest.kt index 73efb0cf3ce..05b67086346 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTest.kt @@ -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.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 abstract class AbstractLLFirBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { - override fun configureTest(builder: TestConfigurationBuilder) { - with(builder) { - facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) - baseConfiguration() - useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor) - } + override fun facade(): Constructor { + return ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve) } + + override fun facadeSpecificSuppressor(): (TestServices) -> AfterAnalysisChecker = ::LLFirOnlyNonReversedTestSuppressor } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTestBase.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTestBase.kt index 6ba3e89fd2f..53b29bfbeec 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTestBase.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirBlackBoxCodegenBasedTestBase.kt @@ -6,6 +6,7 @@ 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.test.Constructor import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.TargetBackend 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.FirResolvedTypesVerifier 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.configureModernJavaWhenNeeded 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. */ abstract class AbstractLLFirBlackBoxCodegenBasedTestBase : AbstractLowLevelCompilerBasedTest() { - protected fun TestConfigurationBuilder.baseConfiguration() { - baseFirBlackBoxCodegenTestDirectivesConfiguration() - configureModernJavaWhenNeeded() - useConfigurators( - ::CommonEnvironmentConfigurator, - ::JvmEnvironmentConfigurator, - ) + abstract fun facade(): Constructor + abstract fun facadeSpecificSuppressor(): Constructor - useAdditionalSourceProviders( - ::AdditionalDiagnosticsSourceFilesProvider, - ::CoroutineHelpersSourceFilesProvider, - ::CodegenHelpersSourceFilesProvider, - ) - - firHandlersStep { - useHandlers( - ::FirDiagnosticsHandler, - ::FirDumpHandler, - ::FirScopeDumpHandler, - ::FirCfgDumpHandler, - ::FirResolvedTypesVerifier, + override fun configureTest(builder: TestConfigurationBuilder) { + with(builder) { + facadeStep(facade()) + baseFirBlackBoxCodegenTestDirectivesConfiguration() + configureModernJavaWhenNeeded() + useConfigurators( + ::CommonEnvironmentConfigurator, + ::JvmEnvironmentConfigurator, ) - } - useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor) + useAdditionalSourceProviders( + ::AdditionalDiagnosticsSourceFilesProvider, + ::CoroutineHelpersSourceFilesProvider, + ::CodegenHelpersSourceFilesProvider, + ) + + firHandlersStep { + useHandlers( + ::FirDiagnosticsHandler, + ::FirDumpHandler, + ::FirScopeDumpHandler, + ::FirCfgDumpHandler, + ::FirResolvedTypesVerifier, + ) + } + + useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor, facadeSpecificSuppressor()) + } } override fun shouldSkipTest(filePath: String, configuration: TestConfiguration): Boolean { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirReversedBlackBoxCodegenBasedTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirReversedBlackBoxCodegenBasedTest.kt index 916fe8ed8d1..8a7957edf85 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirReversedBlackBoxCodegenBasedTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirReversedBlackBoxCodegenBasedTest.kt @@ -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.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 abstract class AbstractLLFirReversedBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { - override fun configureTest(builder: TestConfigurationBuilder) { - with(builder) { - facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)) - baseConfiguration() - useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor) - } + override fun facade(): Constructor { + return ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder) } + + override fun facadeSpecificSuppressor(): Constructor = ::LLFirOnlyReversedTestSuppressor }