Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
      2 // rdar://8973810
      3 // rdar://12717705
      4 
      5 @protocol P
      6 - (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
      7 @end
      8 
      9 @interface A <P>
     10 + (void)F __attribute__((deprecated));
     11 @end
     12 
     13 @interface A()
     14 - (void) E __attribute__((deprecated));
     15 @end
     16 
     17 @implementation A
     18 + (void)F { }	// No warning, implementing its own deprecated method
     19 - (void) D {} //  expected-warning {{Implementing deprecated method}}
     20 - (void) E {} // No warning, implementing deprecated method in its class extension.
     21 @end
     22 
     23 @interface A(CAT)
     24 - (void) G __attribute__((deprecated)); 
     25 @end
     26 
     27 @implementation A(CAT)
     28 - (void) G {} 	// No warning, implementing its own deprecated method
     29 @end
     30 
     31 __attribute__((deprecated))
     32 @interface CL // expected-note 2 {{class declared here}} // expected-note 2 {{'CL' has been explicitly marked deprecated here}}
     33 @end
     34 
     35 @implementation CL // expected-warning {{Implementing deprecated class}}
     36 @end
     37 
     38 @implementation CL ( SomeCategory ) // expected-warning {{'CL' is deprecated}} \
     39                                     // expected-warning {{Implementing deprecated category}}
     40 @end
     41 
     42 @interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
     43 @end
     44 
     45 @interface BASE
     46 - (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
     47 @end
     48 
     49 @interface SUB : BASE
     50 @end
     51 
     52 @implementation SUB
     53 - (void) B {} // expected-warning {{Implementing deprecated method}}
     54 @end
     55 
     56 @interface Test
     57 @end
     58 
     59 @interface Test()
     60 - (id)initSpecialInPrivateHeader __attribute__((deprecated));
     61 @end
     62 
     63 @implementation Test
     64 - (id)initSpecialInPrivateHeader {
     65   return (void *)0;
     66 }
     67 @end
     68