Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjC / tentative-property-decl.m
blob356d34cf539c3241557b2e35ab31e405fb6a7b53
1 // RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s
2 // expected-no-diagnostics
3 /** A property may not be both 'readonly' and having a memory management attribute
4     (copy/retain/etc.). But, property declaration in primary class and protcols
5     are tentative as they may be overridden into a 'readwrite' property in class 
6     extensions. So, do not issue any warning on 'readonly' and memory management
7     attributes in a property.
8 */
10 @interface Super {
12 @end
14 @class NSString;
16 @interface MyClass : Super
17 @property(nonatomic, copy, readonly) NSString *prop;
18 @property(nonatomic, copy, readonly) id warnProp;
19 @end
21 @interface MyClass ()
22 @property(nonatomic, copy, readwrite) NSString *prop;
23 @end
25 @implementation MyClass
26 @synthesize prop;
27 @synthesize warnProp;
28 @end
31 @protocol P
32 @property(nonatomic, copy, readonly) NSString *prop;
33 @property(nonatomic, copy, readonly) id warnProp;
34 @end
36 @interface YourClass : Super <P>
37 @end
39 @interface YourClass ()
40 @property(nonatomic, copy, readwrite) NSString *prop;
41 @end
43 @implementation YourClass 
44 @synthesize prop;
45 @synthesize warnProp;
46 @end