diff options
author | Alp Toker <alp@nuanti.com> | 2014-06-12 10:15:20 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-06-12 10:15:20 +0000 |
commit | 18a9b6654286356870c6c336ad9fdc6ad7599dbe (patch) | |
tree | a5233ce6ebfd92720529dc812124197fabc124e9 /lib/Lex | |
parent | 1408b3372ea1b0b84c31103a4a2f54391cc73138 (diff) | |
download | clang-18a9b6654286356870c6c336ad9fdc6ad7599dbe.tar.gz clang-18a9b6654286356870c6c336ad9fdc6ad7599dbe.tar.bz2 clang-18a9b6654286356870c6c336ad9fdc6ad7599dbe.tar.xz |
Complete the switch from mappings to declarative diagnostic severities
This begins to address cognitive dissonance caused by treating the Note
diagnostic level as a severity in the diagnostic engine.
No change in functionality.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210758 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex')
-rw-r--r-- | lib/Lex/Pragma.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp index ea3a10d536..f1b96f8b55 100644 --- a/lib/Lex/Pragma.cpp +++ b/lib/Lex/Pragma.cpp @@ -954,16 +954,7 @@ public: IdentifierInfo *II = Tok.getIdentifierInfo(); PPCallbacks *Callbacks = PP.getPPCallbacks(); - diag::Severity Map; - if (II->isStr("warning")) - Map = diag::MAP_WARNING; - else if (II->isStr("error")) - Map = diag::MAP_ERROR; - else if (II->isStr("ignored")) - Map = diag::MAP_IGNORE; - else if (II->isStr("fatal")) - Map = diag::MAP_FATAL; - else if (II->isStr("pop")) { + if (II->isStr("pop")) { if (!PP.getDiagnostics().popMappings(DiagLoc)) PP.Diag(Tok, diag::warn_pragma_diagnostic_cannot_pop); else if (Callbacks) @@ -974,7 +965,16 @@ public: if (Callbacks) Callbacks->PragmaDiagnosticPush(DiagLoc, Namespace); return; - } else { + } + + diag::Severity SV = llvm::StringSwitch<diag::Severity>(II->getName()) + .Case("ignored", diag::Severity::Ignored) + .Case("warning", diag::Severity::Warning) + .Case("error", diag::Severity::Error) + .Case("fatal", diag::Severity::Fatal) + .Default(diag::Severity()); + + if (SV == diag::Severity()) { PP.Diag(Tok, diag::warn_pragma_diagnostic_invalid); return; } @@ -998,12 +998,12 @@ public: return; } - if (PP.getDiagnostics().setDiagnosticGroupMapping(WarningName.substr(2), - Map, DiagLoc)) + if (PP.getDiagnostics().setDiagnosticGroupMapping(WarningName.substr(2), SV, + DiagLoc)) PP.Diag(StringLoc, diag::warn_pragma_diagnostic_unknown_warning) << WarningName; else if (Callbacks) - Callbacks->PragmaDiagnostic(DiagLoc, Namespace, Map, WarningName); + Callbacks->PragmaDiagnostic(DiagLoc, Namespace, SV, WarningName); } }; |