Keep track of when "unrecoverable" errors occur, then allow
clang_saveTranslationUnit() to save a PCH file if the only errors it
contains are recoverable errors. Fixes <rdar://problem/9727804>.
llvm-svn: 134503
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp
index b5b48cb..147ba7e 100644
--- a/clang/lib/Basic/DiagnosticIDs.cpp
+++ b/clang/lib/Basic/DiagnosticIDs.cpp
@@ -686,9 +686,11 @@
if (DiagLevel >= DiagnosticIDs::Error) {
Diag.TrapErrorOccurred = true;
- if (isUnrecoverable(DiagID))
+ if (isUnrecoverable(DiagID)) {
Diag.TrapUnrecoverableErrorOccurred = true;
-
+ Diag.UnrecoverableErrorOccurred = true;
+ }
+
if (Diag.Client->IncludeInDiagnosticCounts()) {
Diag.ErrorOccurred = true;
++Diag.NumErrors;
@@ -733,7 +735,7 @@
}
// Only errors may be unrecoverable.
- if (getBuiltinDiagClass(DiagID) < DiagnosticIDs::Error)
+ if (getBuiltinDiagClass(DiagID) < CLASS_ERROR)
return false;
if (DiagID == diag::err_unavailable ||