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 9fd2201bcbd..33404d13873 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 @@ -22,6 +22,7 @@ abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTes override fun TestConfigurationBuilder.configureTest() { baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) useAfterAnalysisCheckers(::ContractViolationSuppressor) + useAfterAnalysisCheckers(::DiagnosticSuppressor) } } @@ -51,3 +52,29 @@ private class ContractViolationSuppressor(testServices: TestServices) : AfterAna val IGNORE_CONTRACT_VIOLATIONS by directive("Temporary disables test with contract violation until the issue is fixed") } } + +private class DiagnosticSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) { + override val directiveContainers: List get() = listOf(Companion) + + override fun suppressIfNeeded(failedAssertions: List): List { + if (!isDisabled()) { + return failedAssertions + } + + return if (failedAssertions.isEmpty()) { + listOf( + AssertionError( + "Test contains $IGNORE_DIAGNOSTIC_API directive but no errors was reported. Please remove directive", + ).wrap() + ) + } else { + emptyList() + } + } + + private fun isDisabled(): Boolean = IGNORE_DIAGNOSTIC_API in testServices.moduleStructure.allDirectives + + companion object : SimpleDirectivesContainer() { + val IGNORE_DIAGNOSTIC_API by directive("Temporary disables diagnostic api test until the issue is fixed") + } +} diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/noneWithForEach.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/noneWithForEach.kt index da161893516..7174491782a 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/noneWithForEach.kt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/noneWithForEach.kt @@ -1,3 +1,7 @@ +// IGNORE_DIAGNOSTIC_API +// IGNORE_REVERSED_RESOLVE +// Ignore reason: KT-58786 + interface Diagnostic { val name: String }