From cca04bbcc26386cc675df652903abb0ba0e5fb48 Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Mon, 2 Oct 2023 14:06:16 +0300 Subject: [PATCH] [FIR] Check test text for all alongside tests For some reason the practice is to configure the K2 diagnostics tests as "alongside" and instruct K1 tests to ensure there are no unexpected differences in the sources. But someone may still forget there is something that they need to configure in the K1 runners. --- .../based/AbstractDiagnosticCompilerTestDataTest.kt | 5 ++++- ...resolvedReversedDiagnosticCompilerTestDataTest.kt | 4 ++-- .../nativeTests/nativeProtectedFunCall.fir.kt | 3 ++- .../nativeTests/nativeProtectedFunCall.kt | 1 + .../testsWithJsStdLib/native/enumEntry.kt | 1 + .../kotlin/test/runners/AbstractFirDiagnosticTest.kt | 12 +++++++++--- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractDiagnosticCompilerTestDataTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractDiagnosticCompilerTestDataTest.kt index 33404d13873..a6e3cbb01b0 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractDiagnosticCompilerTestDataTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractDiagnosticCompilerTestDataTest.kt @@ -20,7 +20,10 @@ import org.jetbrains.kotlin.test.services.moduleStructure abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() { override fun TestConfigurationBuilder.configureTest() { - baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) + baseFirDiagnosticTestConfiguration( + frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve), + testDataConsistencyHandler = ::ReversedFirIdenticalChecker, + ) useAfterAnalysisCheckers(::ContractViolationSuppressor) useAfterAnalysisCheckers(::DiagnosticSuppressor) } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest.kt index c55da5e7979..ae92ea4c4f6 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest.kt @@ -26,12 +26,12 @@ import org.jetbrains.kotlin.test.utils.llFirTestDataFile abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() { override fun TestConfigurationBuilder.configureTest() { baseFirDiagnosticTestConfiguration( - frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder) + frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder), + testDataConsistencyHandler = ::ReversedFirIdenticalChecker, ) useAfterAnalysisCheckers(::FirReversedSuppressor) useMetaTestConfigurators(::ReversedDiagnosticsConfigurator) - useAfterAnalysisCheckers(::ReversedFirIdenticalChecker) } } diff --git a/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.fir.kt b/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.fir.kt index 806e076589c..79237e68916 100644 --- a/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.fir.kt +++ b/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.fir.kt @@ -11,10 +11,11 @@ open class ProtectedInsideInlineError : ProtectedInsideInlineParent() { protected var protectedVar = 0 protected fun protectedFun() = 0 - inline fun publicInlineUserFun() { + inline fun publicInlineUserFun(): Int { println(protectedVar + protectedParentVar) protectedFun() protectedParentFun() + return protectedVar + protectedParentVar } inline var publicInlineUserVal: Int diff --git a/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.kt b/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.kt index c3b93d87b51..25bb24bc14a 100644 --- a/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.kt +++ b/compiler/testData/diagnostics/nativeTests/nativeProtectedFunCall.kt @@ -12,6 +12,7 @@ open class ProtectedInsideInlineError : ProtectedInsideInlineParent() { protected fun protectedFun() = 0 inline fun publicInlineUserFun(): Int { + println(protectedVar + protectedParentVar) protectedFun() protectedParentFun() return protectedVar + protectedParentVar diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt index dc24a19a8b8..66c14459508 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt @@ -1,3 +1,4 @@ +// !DIAGNOSTICS: +ENUM_CLASS_IN_EXTERNAL_DECLARATION_WARNING external enum class E { X, Y { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt index 6a7053fb9fb..86be754b904 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt @@ -27,8 +27,10 @@ import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE import org.jetbrains.kotlin.test.directives.configureFirParser +import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler import org.jetbrains.kotlin.test.frontend.fir.* import org.jetbrains.kotlin.test.frontend.fir.handlers.* +import org.jetbrains.kotlin.test.model.AfterAnalysisChecker import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.FrontendFacade import org.jetbrains.kotlin.test.model.FrontendKinds @@ -114,10 +116,13 @@ open class AbstractFirPsiWithActualizerDiagnosticsTest : AbstractFirWithActualiz open class AbstractFirLightTreeWithActualizerDiagnosticsTest : AbstractFirWithActualizerDiagnosticsTest(FirParser.LightTree) -fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside() { +fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside( + testDataConsistencyHandler: Constructor = ::FirTestDataConsistencyHandler, +) { useAfterAnalysisCheckers( ::FirIdenticalChecker, ::FirFailingTestSuppressor, + testDataConsistencyHandler, ) useMetaTestConfigurators(::FirOldFrontendMetaConfigurator) } @@ -125,7 +130,8 @@ fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside() { // `baseDir` is used in Kotlin plugin from IJ infra fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration( baseDir: String = ".", - frontendFacade: Constructor> = ::FirFrontendFacade + frontendFacade: Constructor> = ::FirFrontendFacade, + testDataConsistencyHandler: Constructor = ::FirTestDataConsistencyHandler, ) { globalDefaults { frontend = FrontendKinds.FIR @@ -160,7 +166,7 @@ fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration( useMetaInfoProcessors(::PsiLightTreeMetaInfoProcessor) forTestsMatching("compiler/testData/diagnostics/*") { - configurationForClassicAndFirTestsAlongside() + configurationForClassicAndFirTestsAlongside(testDataConsistencyHandler) } forTestsMatching("compiler/fir/analysis-tests/testData/*") {