diff options
Diffstat (limited to 'test/SemaObjC/tentative-property-decl.m')
-rw-r--r-- | test/SemaObjC/tentative-property-decl.m | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/SemaObjC/tentative-property-decl.m b/test/SemaObjC/tentative-property-decl.m new file mode 100644 index 0000000000000..f69ac6dace431 --- /dev/null +++ b/test/SemaObjC/tentative-property-decl.m @@ -0,0 +1,47 @@ +// RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s +// rdar://11656982 +/** Normally, a property cannot be both 'readonly' and having a "write" 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. Postpone diagnosing such warnings until the class implementation + is seen. +*/ + +@interface Super { +} +@end + +@class NSString; + +@interface MyClass : Super +@property(nonatomic, copy, readonly) NSString *prop; +@property(nonatomic, copy, readonly) id warnProp; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}} +@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; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}} +@end + +@interface YourClass : Super <P> +@end + +@interface YourClass () +@property(nonatomic, copy, readwrite) NSString *prop; +@end + +@implementation YourClass +@synthesize prop; +@synthesize warnProp; +@end + |