From: Erik Pilkington Date: Sat, 7 Jul 2018 01:50:20 +0000 (+0000) Subject: [Sema] Emit -Wincomplete-implementation for partial methods. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d377dc1b8e5206ee4cf6fc1f66e12fbda6d51519;p=clang [Sema] Emit -Wincomplete-implementation for partial methods. Fixes rdar://40634455 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@336478 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 6809b48dc8..8c621dfa40 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -2188,17 +2188,9 @@ static void WarnUndefinedMethod(Sema &S, SourceLocation ImpLoc, unsigned DiagID, NamedDecl *NeededFor = nullptr) { // No point warning no definition of method which is 'unavailable'. - 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: + if (method->getAvailability() == AR_Unavailable) return; - } - + // FIXME: For now ignore 'IncompleteImpl'. // Previously we grouped all unimplemented methods under a single // warning, but some users strongly voiced that they would prefer diff --git a/test/SemaObjC/incomplete-implementation.m b/test/SemaObjC/incomplete-implementation.m index 74dea2aa86..910cda5f07 100644 --- a/test/SemaObjC/incomplete-implementation.m +++ b/test/SemaObjC/incomplete-implementation.m @@ -13,6 +13,13 @@ - Meth {return 0;} // expected-warning {{category is implementing a method which will also be implemented by its primary class}} @end +// rdar://40634455 +@interface MyClass +-(void)mymeth __attribute__((availability(macos, introduced=100))); // expected-note{{here}} +@end +@implementation MyClass // expected-warning{{'mymeth' not found}} +@end + #pragma GCC diagnostic ignored "-Wincomplete-implementation" @interface I2 - Meth; // expected-note{{method 'Meth' declared here}}