[Sema] Emit -Wincomplete-implementation for partial methods.
authorErik Pilkington <erik.pilkington@gmail.com>
Sat, 7 Jul 2018 01:50:20 +0000 (01:50 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Sat, 7 Jul 2018 01:50:20 +0000 (01:50 +0000)
Fixes rdar://40634455

llvm-svn: 336478

clang/lib/Sema/SemaDeclObjC.cpp
clang/test/SemaObjC/incomplete-implementation.m

index 6809b48..8c621df 100644 (file)
@@ -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
index 74dea2a..910cda5 100644 (file)
 - 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}}