1// RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s
2// expected-no-diagnostics
3// rdar://11656982
4/** A property may not be both 'readonly' and having a memory management attribute
5    (copy/retain/etc.). But, property declaration in primary class and protcols
6    are tentative as they may be overridden into a 'readwrite' property in class
7    extensions. So, do not issue any warning on 'readonly' and memory management
8    attributes in a property.
9*/
10
11@interface Super {
12}
13@end
14
15@class NSString;
16
17@interface MyClass : Super
18@property(nonatomic, copy, readonly) NSString *prop;
19@property(nonatomic, copy, readonly) id warnProp;
20@end
21
22@interface MyClass ()
23@property(nonatomic, copy, readwrite) NSString *prop;
24@end
25
26@implementation MyClass
27@synthesize prop;
28@synthesize warnProp;
29@end
30
31
32@protocol P
33@property(nonatomic, copy, readonly) NSString *prop;
34@property(nonatomic, copy, readonly) id warnProp;
35@end
36
37@interface YourClass : Super <P>
38@end
39
40@interface YourClass ()
41@property(nonatomic, copy, readwrite) NSString *prop;
42@end
43
44@implementation YourClass
45@synthesize prop;
46@synthesize warnProp;
47@end
48
49