| // RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s | 
 | // expected-no-diagnostics | 
 | // rdar://11656982 | 
 | /** 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 | 
 |  |