150
|
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
|