r336478 - [Sema] Emit -Wincomplete-implementation for partial methods.

Erik Pilkington via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 6 18:50:21 PDT 2018


Author: epilk
Date: Fri Jul  6 18:50:20 2018
New Revision: 336478

URL: http://llvm.org/viewvc/llvm-project?rev=336478&view=rev
Log:
[Sema] Emit -Wincomplete-implementation for partial methods.

Fixes rdar://40634455

Modified:
    cfe/trunk/lib/Sema/SemaDeclObjC.cpp
    cfe/trunk/test/SemaObjC/incomplete-implementation.m

Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=336478&r1=336477&r2=336478&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Fri Jul  6 18:50:20 2018
@@ -2188,17 +2188,9 @@ static void WarnUndefinedMethod(Sema &S,
                                 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

Modified: cfe/trunk/test/SemaObjC/incomplete-implementation.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/incomplete-implementation.m?rev=336478&r1=336477&r2=336478&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/incomplete-implementation.m (original)
+++ cfe/trunk/test/SemaObjC/incomplete-implementation.m Fri Jul  6 18:50:20 2018
@@ -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
+ at interface MyClass
+-(void)mymeth __attribute__((availability(macos, introduced=100))); // expected-note{{here}}
+ at end
+ at implementation MyClass // expected-warning{{'mymeth' not found}}
+ at end
+
 #pragma GCC diagnostic ignored "-Wincomplete-implementation"
 @interface I2
 - Meth; // expected-note{{method 'Meth' declared here}}




More information about the cfe-commits mailing list