aboutsummaryrefslogtreecommitdiff
path: root/lib/Basic/DiagnosticIDs.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2011-09-29 01:52:06 +0000
committerDaniel Dunbar <daniel@zuster.org>2011-09-29 01:52:06 +0000
commita5e41333b06fdf036d58495490eb14d6a0a3fcf7 (patch)
tree77d93d088ad11d28667f1974baeaf58870afcba3 /lib/Basic/DiagnosticIDs.cpp
parent3f8394669673451061f57ced81f0a2cae087f119 (diff)
Basic/Diagnostics: Add three explicit bits to DiagnosticMappingInfo to track "no-warning-as-error", "no-error-as-fatal", and "show-in-system-header", and update DiagnosticsEngine::setDiagnosticGroup{WarningAsError,ErrorAsFatal} and GetDefaultDiagMappingInfo to set them appropriately.
- No actual functionality change for now, we still also use the diag::Mapping::{MAP_WARNING_NO_ERROR,MAP_ERROR_NO_FATAL,MAP_WARNING_SHOW_IN_SYSTEM_HEADER} for a little while longer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140768 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/DiagnosticIDs.cpp')
-rw-r--r--lib/Basic/DiagnosticIDs.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/lib/Basic/DiagnosticIDs.cpp b/lib/Basic/DiagnosticIDs.cpp
index 3129f731f1..65e5c635d5 100644
--- a/lib/Basic/DiagnosticIDs.cpp
+++ b/lib/Basic/DiagnosticIDs.cpp
@@ -184,26 +184,29 @@ static const StaticDiagInfoRec *GetDiagInfo(unsigned DiagID) {
return Found;
}
-static diag::Mapping GetDefaultDiagMapping(unsigned DiagID) {
- if (const StaticDiagInfoRec *Info = GetDiagInfo(DiagID)) {
- // Compute the effective mapping based on the extra bits.
- diag::Mapping Mapping = (diag::Mapping) Info->Mapping;
+static DiagnosticMappingInfo GetDefaultDiagMappingInfo(unsigned DiagID) {
+ DiagnosticMappingInfo Info = DiagnosticMappingInfo::MakeInfo(
+ diag::MAP_FATAL, /*IsUser=*/false, /*IsPragma=*/false);
+
+ if (const StaticDiagInfoRec *StaticInfo = GetDiagInfo(DiagID)) {
+ Info.setMapping((diag::Mapping) StaticInfo->Mapping);
- if (Info->WarnNoWerror) {
- assert(Mapping == diag::MAP_WARNING &&
+ if (StaticInfo->WarnNoWerror) {
+ assert(Info.getMapping() == diag::MAP_WARNING &&
"Unexpected mapping with no-Werror bit!");
- Mapping = diag::MAP_WARNING_NO_WERROR;
+ Info.setMapping(diag::MAP_WARNING_NO_WERROR);
+ Info.setNoWarningAsError(true);
}
- if (Info->WarnShowInSystemHeader) {
- assert(Mapping == diag::MAP_WARNING &&
+ if (StaticInfo->WarnShowInSystemHeader) {
+ assert(Info.getMapping() == diag::MAP_WARNING &&
"Unexpected mapping with show-in-system-header bit!");
- Mapping = diag::MAP_WARNING_SHOW_IN_SYSTEM_HEADER;
+ Info.setMapping(diag::MAP_WARNING_SHOW_IN_SYSTEM_HEADER);
+ Info.setShowInSystemHeader(true);
}
-
- return Mapping;
}
- return diag::MAP_FATAL;
+
+ return Info;
}
/// getWarningOptionForDiag - Return the lowest-level warning option that
@@ -247,8 +250,7 @@ DiagnosticMappingInfo &DiagnosticsEngine::DiagState::getOrAddMappingInfo(
// Initialize the entry if we added it.
if (Result.second) {
assert(Result.first->second.isUnset() && "unexpected unset entry");
- Result.first->second = DiagnosticMappingInfo::MakeInfo(
- GetDefaultDiagMapping(Diag), /*IsUser=*/false, /*IsPragma=*/false);
+ Result.first->second = GetDefaultDiagMappingInfo(Diag);
}
return Result.first->second;
@@ -474,7 +476,8 @@ bool DiagnosticIDs::isBuiltinExtensionDiag(unsigned DiagID,
getBuiltinDiagClass(DiagID) != CLASS_EXTENSION)
return false;
- EnabledByDefault = GetDefaultDiagMapping(DiagID) != diag::MAP_IGNORE;
+ EnabledByDefault =
+ GetDefaultDiagMappingInfo(DiagID).getMapping() != diag::MAP_IGNORE;
return true;
}
@@ -482,7 +485,7 @@ bool DiagnosticIDs::isDefaultMappingAsError(unsigned DiagID) {
if (DiagID >= diag::DIAG_UPPER_LIMIT)
return false;
- return GetDefaultDiagMapping(DiagID) == diag::MAP_ERROR;
+ return GetDefaultDiagMappingInfo(DiagID).getMapping() == diag::MAP_ERROR;
}
/// getDescription - Given a diagnostic ID, return a description of the