]> granicus.if.org Git - clang/commitdiff
fix rdar://6288301: custom warnings don't respect -Werror.
authorChris Lattner <sabre@nondot.org>
Fri, 17 Oct 2008 21:24:47 +0000 (21:24 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 17 Oct 2008 21:24:47 +0000 (21:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57731 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Diagnostic.cpp

index 0f8f314f15c8a700185511627de72c73026da8b0..c3ff10d427934ae289197b0d45986b1427409571 100644 (file)
@@ -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<DiagDesc, unsigned>::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);
 }