diff options
| author | Douglas Gregor <dgregor@apple.com> | 2012-12-11 18:53:07 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2012-12-11 18:53:07 +0000 |
| commit | c2e3d5cb2980b06fd51b8f535561fe2ecd2c8a55 (patch) | |
| tree | 1190074c2980045fd6b2e6b45eb3294442f33a5b /clang | |
| parent | 256f1dd0fc2766292071e4ad34a700d2d878dedd (diff) | |
| download | bcm5719-llvm-c2e3d5cb2980b06fd51b8f535561fe2ecd2c8a55.tar.gz bcm5719-llvm-c2e3d5cb2980b06fd51b8f535561fe2ecd2c8a55.zip | |
Don't complain about incomplete implementations for methods that are
unavailable due to availability attributes. <rdar://problem/12798237>
llvm-svn: 169903
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 11 | ||||
| -rw-r--r-- | clang/test/SemaObjC/incomplete-implementation.m | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 14546deef0c..64b000ee9ab 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1168,8 +1168,17 @@ void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, void Sema::WarnUndefinedMethod(SourceLocation ImpLoc, ObjCMethodDecl *method, bool &IncompleteImpl, unsigned DiagID) { // No point warning no definition of method which is 'unavailable'. - if (method->hasAttr<UnavailableAttr>()) + switch (method->getAvailability()) { + case AR_Available: + case AR_Deprecated: + break; + + // Don't warn about unavailable or not-yet-introduced methods. + case AR_NotYetIntroduced: + case AR_Unavailable: return; + } + if (!IncompleteImpl) { Diag(ImpLoc, diag::warn_incomplete_impl); IncompleteImpl = true; diff --git a/clang/test/SemaObjC/incomplete-implementation.m b/clang/test/SemaObjC/incomplete-implementation.m index 54f66efcb22..69e355cb9a6 100644 --- a/clang/test/SemaObjC/incomplete-implementation.m +++ b/clang/test/SemaObjC/incomplete-implementation.m @@ -1,8 +1,10 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s @interface I - Meth; // expected-note{{method definition for 'Meth' not found}} \ // expected-note{{method 'Meth' declared here}} +- unavailableMeth __attribute__((availability(macosx,unavailable))); +- unavailableMeth2 __attribute__((unavailable)); @end @implementation I // expected-warning{{incomplete implementation}} |

