1// RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s 2// rdar://11656982 3/** Normally, a property cannot be both 'readonly' and having a "write" 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. Postpone diagnosing such warnings until the class implementation 7 is seen. 8*/ 9 10@interface Super { 11} 12@end 13 14@class NSString; 15 16@interface MyClass : Super 17@property(nonatomic, copy, readonly) NSString *prop; 18@property(nonatomic, copy, readonly) id warnProp; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}} 19@end 20 21@interface MyClass () 22@property(nonatomic, copy, readwrite) NSString *prop; 23@end 24 25@implementation MyClass 26@synthesize prop; 27@synthesize warnProp; 28@end 29 30 31@protocol P 32@property(nonatomic, copy, readonly) NSString *prop; 33@property(nonatomic, copy, readonly) id warnProp; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}} 34@end 35 36@interface YourClass : Super <P> 37@end 38 39@interface YourClass () 40@property(nonatomic, copy, readwrite) NSString *prop; 41@end 42 43@implementation YourClass 44@synthesize prop; 45@synthesize warnProp; 46@end 47 48