diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-09-29 01:52:06 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-09-29 01:52:06 +0000 |
commit | a5e41333b06fdf036d58495490eb14d6a0a3fcf7 (patch) | |
tree | 77d93d088ad11d28667f1974baeaf58870afcba3 /lib/Basic/DiagnosticIDs.cpp | |
parent | 3f8394669673451061f57ced81f0a2cae087f119 (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.cpp | 37 |
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 |