diff --git a/compiler/testData/diagnostics/foreignAnnotationsTests/tests/multiple.fir.fail b/compiler/testData/diagnostics/foreignAnnotationsTests/tests/multiple.fir.fail new file mode 100644 index 00000000000..91b80a0aff5 --- /dev/null +++ b/compiler/testData/diagnostics/foreignAnnotationsTests/tests/multiple.fir.fail @@ -0,0 +1 @@ +INCONSISTENT_DIAGNOSTICS \ No newline at end of file diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFailingTestSuppressor.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFailingTestSuppressor.kt index 7d0068353ea..f69a60700c7 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFailingTestSuppressor.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFailingTestSuppressor.kt @@ -10,25 +10,26 @@ import org.jetbrains.kotlin.test.model.AfterAnalysisChecker import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.moduleStructure +import org.jetbrains.kotlin.test.utils.firTestDataFile class FirFailingTestSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) { override fun suppressIfNeeded(failedAssertions: List): List { - val testFile = testServices.moduleStructure.originalTestDataFiles.first() - val failFile = testFile.parentFile.resolve("${testFile.nameWithoutExtension}.fail") - val exceptionFromFir = - failedAssertions.firstOrNull { - when (it) { - is WrappedException.FromFacade -> it.facade is FirFrontendFacade - is WrappedException.FromHandler -> it.handler.artifactKind == FrontendKinds.FIR - else -> false - } + val testFile = testServices.moduleStructure.originalTestDataFiles.first().firTestDataFile + val failFile = testFile.parentFile.resolve("${testFile.nameWithoutExtension}.fail").takeIf { it.exists() } + ?: return failedAssertions + val failReason = failFile.readText().trim() + val hasFail = failedAssertions.any { + when (it) { + is WrappedException.FromFacade -> it.facade is FirFrontendFacade + is WrappedException.FromHandler -> it.handler.artifactKind == FrontendKinds.FIR + else -> false } - return when { - failFile.exists() && exceptionFromFir != null -> emptyList() - failFile.exists() && exceptionFromFir == null -> { - failedAssertions + AssertionError("Fail file exists but no exception was throw. Please remove ${failFile.name}").wrap() - } - else -> failedAssertions } + if (hasFail || failReason == INCONSISTENT_DIAGNOSTICS) return emptyList() + return failedAssertions + AssertionError("Fail file exists but no exception was thrown. Please remove ${failFile.name}").wrap() + } + + companion object { + const val INCONSISTENT_DIAGNOSTICS = "INCONSISTENT_DIAGNOSTICS" } }