blob: f63962f96180ec44ae1ca04748d6f97ed946e70f [file] [log] [blame]
Patrick Beardb2f68202012-04-06 18:12:22 +00001// RUN: %clang_cc1 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
Fariborz Jahanianb1224f62011-02-15 00:59:30 +00002// rdar://8973810
Fariborz Jahanian5fa66762012-11-17 20:53:53 +00003// rdar://12717705
Fariborz Jahanianb1224f62011-02-15 00:59:30 +00004
5@protocol P
Ted Kremenek3306ec12012-02-27 22:55:11 +00006- (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
Fariborz Jahanianb1224f62011-02-15 00:59:30 +00007@end
8
9@interface A <P>
Fariborz Jahanian5fa66762012-11-17 20:53:53 +000010+ (void)F __attribute__((deprecated));
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000011@end
12
13@interface A()
Ted Kremenek3306ec12012-02-27 22:55:11 +000014- (void) E __attribute__((deprecated)); // expected-note {{method 'E' declared here}}
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000015@end
16
17@implementation A
Fariborz Jahanian5fa66762012-11-17 20:53:53 +000018+ (void)F { } // No warning, implementing its own deprecated method
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000019- (void) D {} // expected-warning {{Implementing deprecated method}}
20- (void) E {} // expected-warning {{Implementing deprecated method}}
21@end
22
Fariborz Jahanian5fa66762012-11-17 20:53:53 +000023@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
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000031__attribute__((deprecated))
Fariborz Jahanian350e9562012-05-27 16:59:48 +000032@interface CL // expected-note 2 {{class declared here}} // expected-note 2 {{declared here}}
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000033@end
34
35@implementation CL // expected-warning {{Implementing deprecated class}}
36@end
37
Argyrios Kyrtzidisc076e372011-10-06 23:23:27 +000038@implementation CL ( SomeCategory ) // expected-warning {{'CL' is deprecated}} \
39 // expected-warning {{Implementing deprecated category}}
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000040@end
41
42@interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
43@end
44
45@interface BASE
Ted Kremenek3306ec12012-02-27 22:55:11 +000046- (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
Fariborz Jahanianb1224f62011-02-15 00:59:30 +000047@end
48
49@interface SUB : BASE
50@end
51
52@implementation SUB
53- (void) B {} // expected-warning {{Implementing deprecated method}}
54@end
55