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