[Test] Register some identical checkers for specific handlers

- `FirIrDumpIdenticalChecker` for
    - `IrTextDumpHandler`
    - `IrPrettyKotlinDumpHandler`
- `FirIrSourceRangesIdenticalChecker` for
    - `IrSourceRangesDumpHandler`
- `FirIdenticalChecker` for
    - `FirDiagnosticsHandler`
This commit is contained in:
Dmitriy Novozhilov
2024-02-16 10:12:02 +02:00
committed by Space Team
parent ad27d04e68
commit e3dc0f0fa3
13 changed files with 23 additions and 24 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.test.backend.handlers
import org.jetbrains.kotlin.ir.util.FakeOverridesStrategy
import org.jetbrains.kotlin.ir.util.KotlinLikeDumpOptions
import org.jetbrains.kotlin.ir.util.dumpKotlinLike
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler.Companion.computeDumpExtension
import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler.Companion.groupWithTestFiles
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
@@ -17,8 +18,10 @@ import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.EXTERNAL_FILE
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.SKIP_KT_DUMP
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.model.BackendKind
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.ServiceRegistrationData
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.moduleStructure
import org.jetbrains.kotlin.test.utils.MultiModuleInfoDumper
@@ -44,6 +47,9 @@ class IrPrettyKotlinDumpHandler(
override val directiveContainers: List<DirectivesContainer>
get() = listOf(CodegenTestDirectives, FirDiagnosticsDirectives)
override val additionalAfterAnalysisCheckers: List<Constructor<AfterAnalysisChecker>>
get() = listOf(::FirIrDumpIdenticalChecker)
override fun processModule(module: TestModule, info: IrBackendInput) {
if (DUMP_KT_IR !in module.directives || SKIP_KT_DUMP in module.directives) return
dumpModuleKotlinLike(
@@ -13,10 +13,12 @@ import org.jetbrains.kotlin.ir.util.RenderIrElementVisitor
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.model.BackendKind
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
@@ -37,6 +39,9 @@ class IrSourceRangesDumpHandler(
override val directiveContainers: List<DirectivesContainer>
get() = listOf(CodegenTestDirectives, FirDiagnosticsDirectives)
override val additionalAfterAnalysisCheckers: List<Constructor<AfterAnalysisChecker>>
get() = listOf(::FirIrSourceRangesIdenticalChecker)
private val baseDumper = MultiModuleInfoDumper()
private val buildersForSeparateFileDumps: MutableMap<File, StringBuilder> = mutableMapOf()
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.util.dump
import org.jetbrains.kotlin.ir.util.dumpTreesFromLineNumber
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_EXTERNAL_CLASS
@@ -78,6 +79,9 @@ class IrTextDumpHandler(
override val directiveContainers: List<DirectivesContainer>
get() = listOf(CodegenTestDirectives, FirDiagnosticsDirectives)
override val additionalAfterAnalysisCheckers: List<Constructor<AfterAnalysisChecker>>
get() = listOf(::FirIrDumpIdenticalChecker)
private val baseDumper = MultiModuleInfoDumper()
private val buildersForSeparateFileDumps: MutableMap<File, StringBuilder> = mutableMapOf()
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.kotlin.psi.KtQualifiedExpression
import org.jetbrains.kotlin.resolve.AnalyzingUtils
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
@@ -53,6 +54,7 @@ import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.SimpleDirective
import org.jetbrains.kotlin.test.directives.model.singleValue
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.runners.lightTreeSyntaxDiagnosticsReporterHolder
@@ -106,6 +108,9 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes
override val additionalServices: List<ServiceRegistrationData> =
listOf(service(::DiagnosticsService), service(::FirDiagnosticCollectorService))
override val additionalAfterAnalysisCheckers: List<Constructor<AfterAnalysisChecker>>
get() = listOf(::FirIdenticalChecker)
private val fullDiagnosticsRenderer = FullDiagnosticsRenderer(DiagnosticsDirectives.RENDER_DIAGNOSTICS_FULL_TEXT)
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {
@@ -101,7 +101,6 @@ fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside(
testDataConsistencyHandler: Constructor<AfterAnalysisChecker> = ::FirTestDataConsistencyHandler,
) {
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirFailingTestSuppressor,
testDataConsistencyHandler,
)
@@ -42,7 +42,6 @@ fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration(baseDir: Str
useAdditionalSourceProviders(::SpecHelpersSourceFilesProvider.bind(baseDir))
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirTestDataConsistencyHandler,
::FirFailingTestSuppressor,
)
@@ -54,10 +54,7 @@ abstract class AbstractFirForeignAnnotationsTestBase(
}
forTestsMatching("compiler/testData/diagnostics/*") {
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirFailingTestSuppressor,
)
useAfterAnalysisCheckers(::FirFailingTestSuppressor)
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
}
}
@@ -74,9 +74,6 @@ open class AbstractFirScriptCodegenTest : AbstractKotlinCompilerWithTargetBacken
useHandlers(
::FirDiagnosticsHandler
)
useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker,
)
commonFirHandlersForCodegenTest()
}
@@ -108,7 +108,6 @@ fun TestConfigurationBuilder.applyDumpSmapDirective() {
fun TestConfigurationBuilder.configureDumpHandlersForCodegenTest() {
configureIrHandlersStep {
dumpHandlersForConverterStep()
useAfterAnalysisCheckers(::FirIrDumpIdenticalChecker)
}
configureJvmArtifactsHandlersStep {
dumpHandlersForBackendStep()
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.test.runners.ir
import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.backend.handlers.FirIrSourceRangesIdenticalChecker
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.configureFirParser
@@ -37,9 +36,6 @@ abstract class AbstractFirJvmIrSourceRangesTest(
super.configure(builder)
with(builder) {
configureFirParser(parser)
useAfterAnalysisCheckers(
::FirIrSourceRangesIdenticalChecker,
)
}
}
}
@@ -113,10 +113,6 @@ abstract class AbstractIrTextTest<FrontendOutput : ResultingArtifact.FrontendOut
)
}
useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker,
)
forTestsMatching("compiler/testData/ir/irText/properties/backingField/*") {
defaultDirectives {
LanguageSettingsDirectives.LANGUAGE with "+ExplicitBackingFields"
@@ -28,10 +28,7 @@ abstract class AbstractFirParcelizeDiagnosticTestBase(val parser: FirParser) : A
useConfigurators(::ParcelizeEnvironmentConfigurator)
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirFailingTestSuppressor,
)
useAfterAnalysisCheckers(::FirFailingTestSuppressor)
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
}
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
import org.jetbrains.kotlin.test.backend.handlers.FirIrDumpIdenticalChecker
import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
@@ -82,7 +81,7 @@ abstract class AbstractParcelizeBoxTestBase<R : ResultingArtifact.FrontendOutput
useAdditionalServices(service<JvmBoxMainClassProvider>(::ParcelizeMainClassProvider))
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor, ::FirIrDumpIdenticalChecker)
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor)
enableMetaInfoHandler()
}