blob: c89edb9420887d08001678f9ae661b00707e9333 [file] [log] [blame]
Fariborz Jahanian974c9482012-09-21 20:46:37 +00001// RUN: %clang_cc1 -fsyntax-only -triple thumbv6-apple-ios3.0 -verify -Wno-objc-root-class %s
2// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple thumbv6-apple-ios3.0 -verify -Wno-objc-root-class %s
3// rdar://12324295
4
Jordan Rose79af9852012-10-10 16:42:38 +00005typedef signed char BOOL;
6
Fariborz Jahanian974c9482012-09-21 20:46:37 +00007@protocol P
Ted Kremenekb79ee572013-12-18 23:30:06 +00008@property(nonatomic,assign) id ptarget __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{property 'ptarget' is declared deprecated here}} expected-note {{'ptarget' has been explicitly marked deprecated here}}
Fariborz Jahanian974c9482012-09-21 20:46:37 +00009@end
10
11@protocol P1<P>
Ted Kremenekb5445722013-04-06 00:34:27 +000012- (void)setPtarget:(id)arg;
Fariborz Jahanian974c9482012-09-21 20:46:37 +000013@end
14
15
16@interface UITableViewCell<P1>
Ted Kremenekb79ee572013-12-18 23:30:06 +000017@property(nonatomic,assign) id target __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{property 'target' is declared deprecated here}} expected-note {{'setTarget:' has been explicitly marked deprecated here}}
Fariborz Jahanian974c9482012-09-21 20:46:37 +000018@end
19
20@interface PSTableCell : UITableViewCell
Ted Kremenekb5445722013-04-06 00:34:27 +000021 - (void)setTarget:(id)target;
Fariborz Jahanian974c9482012-09-21 20:46:37 +000022@end
23
24@interface UITableViewCell(UIDeprecated)
Ted Kremenekb79ee572013-12-18 23:30:06 +000025@property(nonatomic,assign) id dep_target __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note 2 {{'dep_target' has been explicitly marked deprecated here}} \
Ted Kremenekb5445722013-04-06 00:34:27 +000026 // expected-note 4 {{property 'dep_target' is declared deprecated here}} \
Ted Kremenekb79ee572013-12-18 23:30:06 +000027 // expected-note 2 {{'setDep_target:' has been explicitly marked deprecated here}}
Fariborz Jahanian974c9482012-09-21 20:46:37 +000028@end
29
30@implementation PSTableCell
31- (void)setTarget:(id)target {};
32- (void)setPtarget:(id)val {};
33- (void) Meth {
Ted Kremenekb5445722013-04-06 00:34:27 +000034 [self setTarget: (id)0]; // no-warning
35 [self setDep_target: [self dep_target]]; // expected-warning {{'dep_target' is deprecated: first deprecated in iOS 3.0}} \
36 // expected-warning {{'setDep_target:' is deprecated: first deprecated in iOS 3.0}}
37
38 [self setPtarget: (id)0]; // no-warning
39}
40@end
41
42@implementation UITableViewCell
43@synthesize target;
44@synthesize ptarget;
45- (void)setPtarget:(id)val {};
46- (void)setTarget:(id)target {};
47- (void) Meth {
Fariborz Jahanian974c9482012-09-21 20:46:37 +000048 [self setTarget: (id)0]; // expected-warning {{'setTarget:' is deprecated: first deprecated in iOS 3.0}}
49 [self setDep_target: [self dep_target]]; // expected-warning {{'dep_target' is deprecated: first deprecated in iOS 3.0}} \
50 // expected-warning {{'setDep_target:' is deprecated: first deprecated in iOS 3.0}}
51
Ted Kremenekb5445722013-04-06 00:34:27 +000052 [self setPtarget: (id)0]; // no-warning
Fariborz Jahanian974c9482012-09-21 20:46:37 +000053}
54@end
Jordan Rose79af9852012-10-10 16:42:38 +000055
56
57@interface CustomAccessorNames
Ted Kremenekb79ee572013-12-18 23:30:06 +000058@property(getter=isEnabled,assign) BOOL enabled __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{'isEnabled' has been explicitly marked deprecated here}} expected-note {{property 'enabled' is declared deprecated here}}
Jordan Rose79af9852012-10-10 16:42:38 +000059
Ted Kremenekb79ee572013-12-18 23:30:06 +000060@property(setter=setNewDelegate:,assign) id delegate __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{'setNewDelegate:' has been explicitly marked deprecated here}} expected-note {{property 'delegate' is declared deprecated here}}
Jordan Rose79af9852012-10-10 16:42:38 +000061@end
62
63void testCustomAccessorNames(CustomAccessorNames *obj) {
64 if ([obj isEnabled]) // expected-warning {{'isEnabled' is deprecated: first deprecated in iOS 3.0}}
65 [obj setNewDelegate:0]; // expected-warning {{'setNewDelegate:' is deprecated: first deprecated in iOS 3.0}}
66}
Jordan Rose2bd991a2012-10-10 16:42:54 +000067
68
69@interface ProtocolInCategory
70@end
71
72@interface ProtocolInCategory (TheCategory) <P1>
Ted Kremenekb5445722013-04-06 00:34:27 +000073- (id)ptarget;
Jordan Rose2bd991a2012-10-10 16:42:54 +000074@end
75
Ted Kremenekb5445722013-04-06 00:34:27 +000076id useDeprecatedProperty(ProtocolInCategory *obj, id<P> obj2, int flag) {
77 if (flag)
78 return [obj ptarget]; // no-warning
79 return [obj2 ptarget]; // expected-warning {{'ptarget' is deprecated: first deprecated in iOS 3.0}}
Jordan Rose2bd991a2012-10-10 16:42:54 +000080}