1*67e74705SXin Li //===- unittests/Basic/DiagnosticTest.cpp -- Diagnostic engine tests ------===// 2*67e74705SXin Li // 3*67e74705SXin Li // The LLVM Compiler Infrastructure 4*67e74705SXin Li // 5*67e74705SXin Li // This file is distributed under the University of Illinois Open Source 6*67e74705SXin Li // License. See LICENSE.TXT for details. 7*67e74705SXin Li // 8*67e74705SXin Li //===----------------------------------------------------------------------===// 9*67e74705SXin Li 10*67e74705SXin Li #include "clang/Basic/Diagnostic.h" 11*67e74705SXin Li #include "clang/Basic/DiagnosticIDs.h" 12*67e74705SXin Li #include "gtest/gtest.h" 13*67e74705SXin Li 14*67e74705SXin Li using namespace llvm; 15*67e74705SXin Li using namespace clang; 16*67e74705SXin Li 17*67e74705SXin Li namespace { 18*67e74705SXin Li 19*67e74705SXin Li // Check that DiagnosticErrorTrap works with SuppressAllDiagnostics. TEST(DiagnosticTest,suppressAndTrap)20*67e74705SXin LiTEST(DiagnosticTest, suppressAndTrap) { 21*67e74705SXin Li DiagnosticsEngine Diags(new DiagnosticIDs(), 22*67e74705SXin Li new DiagnosticOptions, 23*67e74705SXin Li new IgnoringDiagConsumer()); 24*67e74705SXin Li Diags.setSuppressAllDiagnostics(true); 25*67e74705SXin Li 26*67e74705SXin Li { 27*67e74705SXin Li DiagnosticErrorTrap trap(Diags); 28*67e74705SXin Li 29*67e74705SXin Li // Diag that would set UncompilableErrorOccurred and ErrorOccurred. 30*67e74705SXin Li Diags.Report(diag::err_target_unknown_triple) << "unknown"; 31*67e74705SXin Li 32*67e74705SXin Li // Diag that would set UnrecoverableErrorOccurred and ErrorOccurred. 33*67e74705SXin Li Diags.Report(diag::err_cannot_open_file) << "file" << "error"; 34*67e74705SXin Li 35*67e74705SXin Li // Diag that would set FatalErrorOccurred 36*67e74705SXin Li // (via non-note following a fatal error). 37*67e74705SXin Li Diags.Report(diag::warn_mt_message) << "warning"; 38*67e74705SXin Li 39*67e74705SXin Li EXPECT_TRUE(trap.hasErrorOccurred()); 40*67e74705SXin Li EXPECT_TRUE(trap.hasUnrecoverableErrorOccurred()); 41*67e74705SXin Li } 42*67e74705SXin Li 43*67e74705SXin Li EXPECT_FALSE(Diags.hasErrorOccurred()); 44*67e74705SXin Li EXPECT_FALSE(Diags.hasFatalErrorOccurred()); 45*67e74705SXin Li EXPECT_FALSE(Diags.hasUncompilableErrorOccurred()); 46*67e74705SXin Li EXPECT_FALSE(Diags.hasUnrecoverableErrorOccurred()); 47*67e74705SXin Li } 48*67e74705SXin Li 49*67e74705SXin Li // Check that FatalsAsErrors works as intended TEST(DiagnosticTest,fatalsAsErrors)50*67e74705SXin LiTEST(DiagnosticTest, fatalsAsErrors) { 51*67e74705SXin Li DiagnosticsEngine Diags(new DiagnosticIDs(), 52*67e74705SXin Li new DiagnosticOptions, 53*67e74705SXin Li new IgnoringDiagConsumer()); 54*67e74705SXin Li Diags.setFatalsAsError(true); 55*67e74705SXin Li 56*67e74705SXin Li // Diag that would set UncompilableErrorOccurred and ErrorOccurred. 57*67e74705SXin Li Diags.Report(diag::err_target_unknown_triple) << "unknown"; 58*67e74705SXin Li 59*67e74705SXin Li // Diag that would set UnrecoverableErrorOccurred and ErrorOccurred. 60*67e74705SXin Li Diags.Report(diag::err_cannot_open_file) << "file" << "error"; 61*67e74705SXin Li 62*67e74705SXin Li // Diag that would set FatalErrorOccurred 63*67e74705SXin Li // (via non-note following a fatal error). 64*67e74705SXin Li Diags.Report(diag::warn_mt_message) << "warning"; 65*67e74705SXin Li 66*67e74705SXin Li EXPECT_TRUE(Diags.hasErrorOccurred()); 67*67e74705SXin Li EXPECT_FALSE(Diags.hasFatalErrorOccurred()); 68*67e74705SXin Li EXPECT_TRUE(Diags.hasUncompilableErrorOccurred()); 69*67e74705SXin Li EXPECT_TRUE(Diags.hasUnrecoverableErrorOccurred()); 70*67e74705SXin Li } 71*67e74705SXin Li 72*67e74705SXin Li } 73