diff options
author | Alp Toker <alp@nuanti.com> | 2014-06-15 23:30:39 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-06-15 23:30:39 +0000 |
commit | d4a3f0e8949647434d8c73e3b563a1cff0b73cfe (patch) | |
tree | 4512b77da6fc9930ad8d71f35259220d1790e214 /clang/lib/Sema/SemaDeclObjC.cpp | |
parent | baabe5091c63748d99bf59a1807c2879881b4af2 (diff) | |
download | bcm5719-llvm-d4a3f0e8949647434d8c73e3b563a1cff0b73cfe.tar.gz bcm5719-llvm-d4a3f0e8949647434d8c73e3b563a1cff0b73cfe.zip |
Hide the concept of diagnostic levels from lex, parse and sema
The compilation pipeline doesn't actually need to know about the high-level
concept of diagnostic mappings, and hiding the final computed level presents
several simplifications and other potential benefits.
The only exceptions are opportunistic checks to see whether expensive code
paths can be avoided for diagnostics that are guaranteed to be ignored at a
certain SourceLocation.
This commit formalizes that invariant by introducing and using
DiagnosticsEngine::isIgnored() in place of individual level checks throughout
lex, parse and sema.
llvm-svn: 211005
Diffstat (limited to 'clang/lib/Sema/SemaDeclObjC.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index fc9fdb1afae..b5205b3e623 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1770,8 +1770,7 @@ static void CheckProtocolMethodDefs(Sema &S, if (C || MethodInClass->isPropertyAccessor()) continue; unsigned DIAG = diag::warn_unimplemented_protocol_method; - if (S.Diags.getDiagnosticLevel(DIAG, ImpLoc) - != DiagnosticsEngine::Ignored) { + if (!S.Diags.isIgnored(DIAG, ImpLoc)) { WarnUndefinedMethod(S, ImpLoc, method, IncompleteImpl, DIAG, PDecl); } @@ -1794,8 +1793,7 @@ static void CheckProtocolMethodDefs(Sema &S, continue; unsigned DIAG = diag::warn_unimplemented_protocol_method; - if (S.Diags.getDiagnosticLevel(DIAG, ImpLoc) != - DiagnosticsEngine::Ignored) { + if (!S.Diags.isIgnored(DIAG, ImpLoc)) { WarnUndefinedMethod(S, ImpLoc, method, IncompleteImpl, DIAG, PDecl); } } @@ -2349,10 +2347,8 @@ ObjCMethodDecl *Sema::LookupMethodInGlobalPool(Selector Sel, SourceRange R, // We support a warning which complains about *any* difference in // method signature. bool strictSelectorMatch = - (receiverIdOrClass && warn && - (Diags.getDiagnosticLevel(diag::warn_strict_multiple_method_decl, - R.getBegin()) - != DiagnosticsEngine::Ignored)); + receiverIdOrClass && warn && + !Diags.isIgnored(diag::warn_strict_multiple_method_decl, R.getBegin()); if (strictSelectorMatch) { for (unsigned I = 1, N = Methods.size(); I != N; ++I) { if (!MatchTwoMethodDeclarations(Methods[0], Methods[I], MMS_strict)) { @@ -3527,7 +3523,7 @@ void Sema::DiagnoseUnusedBackingIvarInAccessor(Scope *S, for (const auto *CurMethod : ImplD->instance_methods()) { unsigned DIAG = diag::warn_unused_property_backing_ivar; SourceLocation Loc = CurMethod->getLocation(); - if (Diags.getDiagnosticLevel(DIAG, Loc) == DiagnosticsEngine::Ignored) + if (Diags.isIgnored(DIAG, Loc)) continue; const ObjCPropertyDecl *PDecl; |