1 // RUN: %clang_cc1 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
6 - (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
10 + (void)F __attribute__((deprecated));
14 - (void) E __attribute__((deprecated));
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.
24 - (void) G __attribute__((deprecated));
27 @implementation A(CAT)
28 - (void) G {} // No warning, implementing its own deprecated method
31 __attribute__((deprecated)) // expected-note 2 {{'CL' has been explicitly marked deprecated here}}
32 @interface CL // expected-note 2 {{class declared here}}
35 @implementation CL // expected-warning {{Implementing deprecated class}}
38 @implementation CL ( SomeCategory ) // expected-warning {{'CL' is deprecated}} \
39 // expected-warning {{Implementing deprecated category}}
42 @interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
46 - (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
53 - (void) B {} // expected-warning {{Implementing deprecated method}}
60 - (id)initSpecialInPrivateHeader __attribute__((deprecated));
64 - (id)initSpecialInPrivateHeader {
69 __attribute__((deprecated))
70 @interface Test(DeprecatedCategory) // expected-note {{category declared here}}
73 @implementation Test(DeprecatedCategory) // expected-warning {{Implementing deprecated category}}