|  | // RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s | 
|  | // expected-no-diagnostics | 
|  | /** A property may not be both 'readonly' and having a memory management attribute | 
|  | (copy/retain/etc.). But, property declaration in primary class and protcols | 
|  | are tentative as they may be overridden into a 'readwrite' property in class | 
|  | extensions. So, do not issue any warning on 'readonly' and memory management | 
|  | attributes in a property. | 
|  | */ | 
|  |  | 
|  | @interface Super { | 
|  | } | 
|  | @end | 
|  |  | 
|  | @class NSString; | 
|  |  | 
|  | @interface MyClass : Super | 
|  | @property(nonatomic, copy, readonly) NSString *prop; | 
|  | @property(nonatomic, copy, readonly) id warnProp; | 
|  | @end | 
|  |  | 
|  | @interface MyClass () | 
|  | @property(nonatomic, copy, readwrite) NSString *prop; | 
|  | @end | 
|  |  | 
|  | @implementation MyClass | 
|  | @synthesize prop; | 
|  | @synthesize warnProp; | 
|  | @end | 
|  |  | 
|  |  | 
|  | @protocol P | 
|  | @property(nonatomic, copy, readonly) NSString *prop; | 
|  | @property(nonatomic, copy, readonly) id warnProp; | 
|  | @end | 
|  |  | 
|  | @interface YourClass : Super <P> | 
|  | @end | 
|  |  | 
|  | @interface YourClass () | 
|  | @property(nonatomic, copy, readwrite) NSString *prop; | 
|  | @end | 
|  |  | 
|  | @implementation YourClass | 
|  | @synthesize prop; | 
|  | @synthesize warnProp; | 
|  | @end | 
|  |  |