diff options
author | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
---|---|---|
committer | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:10:06 +1100 |
commit | be1de4be954c80875ad4108e0a33e8e131b2f2c0 (patch) | |
tree | 1fbbecf276bf7c7bdcbb4dd446099d6d90eaa516 /clang/test/SemaObjC/default-synthesize.m | |
parent | c4626a62754862d20b41e8a46a3574264ea80e6d (diff) | |
parent | f1bd2e48c5324d3f7cda4090c87f8a5b6f463ce2 (diff) |
Merge branch 'master' of ssh://bitbucket.org/czan/honours
Diffstat (limited to 'clang/test/SemaObjC/default-synthesize.m')
-rw-r--r-- | clang/test/SemaObjC/default-synthesize.m | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/default-synthesize.m b/clang/test/SemaObjC/default-synthesize.m new file mode 100644 index 0000000..e6ea0a5 --- /dev/null +++ b/clang/test/SemaObjC/default-synthesize.m @@ -0,0 +1,140 @@ +// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s + +@interface NSString @end + +@interface NSObject @end + +@interface SynthItAll +@property int howMany; +@property (retain) NSString* what; +@end + +@implementation SynthItAll +#if !__has_feature(objc_default_synthesize_properties) +@synthesize howMany, what; +#endif +@end + + +@interface SynthSetter : NSObject +@property (nonatomic) int howMany; // REM: nonatomic to avoid warnings about only implementing one of the pair +@property (nonatomic, retain) NSString* what; +@end + +@implementation SynthSetter +#if !__has_feature(objc_default_synthesize_properties) +@synthesize howMany, what; +#endif + +- (int) howMany { + return self.howMany; +} +// - (void) setHowMany: (int) value + +- (NSString*) what { + return self.what; +} +// - (void) setWhat: (NSString*) value +@end + + +@interface SynthGetter : NSObject +@property (nonatomic) int howMany; // REM: nonatomic to avoid warnings about only implementing one of the pair +@property (nonatomic, retain) NSString* what; +@end + +@implementation SynthGetter +#if !__has_feature(objc_default_synthesize_properties) +@synthesize howMany, what; +#endif + +// - (int) howMany +- (void) setHowMany: (int) value { + self.howMany = value; +} + +// - (NSString*) what +- (void) setWhat: (NSString*) value { + if (self.what != value) { + } +} +@end + + +@interface SynthNone : NSObject +@property int howMany; +@property (retain) NSString* what; +@end + +@implementation SynthNone +#if !__has_feature(objc_default_synthesize_properties) +@synthesize howMany, what; // REM: Redundant anyway +#endif + +- (int) howMany { + return self.howMany; +} +- (void) setHowMany: (int) value { + self.howMany = value; +} + +- (NSString*) what { + return self.what; +} +- (void) setWhat: (NSString*) value { + if (self.what != value) { + } +} +@end + +@protocol TopProtocol + @property (readonly) id myString; +@end + +@interface TopClass <TopProtocol> +{ + id myString; +} +@end + +@interface SubClass : TopClass <TopProtocol> +@end + +@implementation SubClass @end + +// rdar://7920807 +@interface C @end +@interface C (Category) +@property int p; // expected-note 2 {{property declared here}} +@end +@implementation C (Category) // expected-warning {{property 'p' requires method 'p' to be defined}} \ + // expected-warning {{property 'p' requires method 'setP:' to be defined}} +@end + +// Don't complain if a property is already @synthesized by usr. +@interface D +{ +} +@property int PROP; +@end + +@implementation D +- (int) Meth { return self.PROP; } +#if __has_feature(objc_default_synthesize_properties) +@synthesize PROP=IVAR; +#endif +@end + +// rdar://10567333 +@protocol MyProtocol +@property (nonatomic, strong) NSString *requiredString; // expected-note {{property declared here}} + +@optional +@property (nonatomic, strong) NSString *optionalString; +@end + +@interface MyClass <MyProtocol> +@end + +@implementation MyClass // expected-warning {{auto property synthesis will not synthesize property declared in a protocol}} +@end |