From a1f23cc7f5dae8b71b8ee631994274609d35eb89 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 17 Oct 2008 21:24:47 +0000 Subject: [PATCH] fix rdar://6288301: custom warnings don't respect -Werror. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57731 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Diagnostic.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp index 0f8f314f15..c3ff10d427 100644 --- a/lib/Basic/Diagnostic.cpp +++ b/lib/Basic/Diagnostic.cpp @@ -85,7 +85,8 @@ namespace clang { return DiagInfo[DiagID-diag::NUM_BUILTIN_DIAGNOSTICS].first; } - unsigned getOrCreateDiagID(Diagnostic::Level L, const char *Message) { + unsigned getOrCreateDiagID(Diagnostic::Level L, const char *Message, + Diagnostic &Diags) { DiagDesc D(L, Message); // Check to see if it already exists. std::map::iterator I = DiagIDs.lower_bound(D); @@ -96,6 +97,11 @@ namespace clang { unsigned ID = DiagInfo.size()+diag::NUM_BUILTIN_DIAGNOSTICS; DiagIDs.insert(std::make_pair(D, ID)); DiagInfo.push_back(D); + + // If this is a warning, and all warnings are supposed to map to errors, + // insert the mapping now. + if (L == Diagnostic::Warning && Diags.getWarningsAsErrors()) + Diags.setDiagnosticMapping((diag::kind)ID, diag::MAP_ERROR); return ID; } }; @@ -133,7 +139,7 @@ Diagnostic::~Diagnostic() { unsigned Diagnostic::getCustomDiagID(Level L, const char *Message) { if (CustomDiagInfo == 0) CustomDiagInfo = new diag::CustomDiagInfo(); - return CustomDiagInfo->getOrCreateDiagID(L, Message); + return CustomDiagInfo->getOrCreateDiagID(L, Message, *this); } -- 2.40.0