diff options
Diffstat (limited to 'unittests/Basic/DiagnosticTest.cpp')
-rw-r--r-- | unittests/Basic/DiagnosticTest.cpp | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/unittests/Basic/DiagnosticTest.cpp b/unittests/Basic/DiagnosticTest.cpp index 4ffa0837bd6e7..0111b172472b8 100644 --- a/unittests/Basic/DiagnosticTest.cpp +++ b/unittests/Basic/DiagnosticTest.cpp @@ -46,27 +46,30 @@ TEST(DiagnosticTest, suppressAndTrap) { EXPECT_FALSE(Diags.hasUnrecoverableErrorOccurred()); } -// Check that FatalsAsErrors works as intended -TEST(DiagnosticTest, fatalsAsErrors) { - DiagnosticsEngine Diags(new DiagnosticIDs(), - new DiagnosticOptions, - new IgnoringDiagConsumer()); - Diags.setFatalsAsError(true); +// Check that SuppressAfterFatalError works as intended +TEST(DiagnosticTest, suppressAfterFatalError) { + for (unsigned Suppress = 0; Suppress != 2; ++Suppress) { + DiagnosticsEngine Diags(new DiagnosticIDs(), + new DiagnosticOptions, + new IgnoringDiagConsumer()); + Diags.setSuppressAfterFatalError(Suppress); - // Diag that would set UncompilableErrorOccurred and ErrorOccurred. - Diags.Report(diag::err_target_unknown_triple) << "unknown"; + // Diag that would set UnrecoverableErrorOccurred and ErrorOccurred. + Diags.Report(diag::err_cannot_open_file) << "file" << "error"; - // Diag that would set UnrecoverableErrorOccurred and ErrorOccurred. - Diags.Report(diag::err_cannot_open_file) << "file" << "error"; + // Diag that would set FatalErrorOccurred + // (via non-note following a fatal error). + Diags.Report(diag::warn_mt_message) << "warning"; - // Diag that would set FatalErrorOccurred - // (via non-note following a fatal error). - Diags.Report(diag::warn_mt_message) << "warning"; + EXPECT_TRUE(Diags.hasErrorOccurred()); + EXPECT_TRUE(Diags.hasFatalErrorOccurred()); + EXPECT_TRUE(Diags.hasUncompilableErrorOccurred()); + EXPECT_TRUE(Diags.hasUnrecoverableErrorOccurred()); - EXPECT_TRUE(Diags.hasErrorOccurred()); - EXPECT_FALSE(Diags.hasFatalErrorOccurred()); - EXPECT_TRUE(Diags.hasUncompilableErrorOccurred()); - EXPECT_TRUE(Diags.hasUnrecoverableErrorOccurred()); + // The warning should be emitted and counted only if we're not suppressing + // after fatal errors. + EXPECT_EQ(Diags.getNumWarnings(), Suppress ? 0u : 1u); + } } } |