diff options
| author | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
|---|---|---|
| committer | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
| commit | 222e2a7620e6520ffaf4fc4e69d79c18da31542e (patch) | |
| tree | 7bfbc05bfa3b41c8f9d2e56d53a0bc3e310df239 /clang/test/SemaObjC/property-13.m | |
| parent | 3d206f03985b50beacae843d880bccdc91a9f424 (diff) | |
Add the clang library to the repo (with some of my changes, too).
Diffstat (limited to 'clang/test/SemaObjC/property-13.m')
| -rw-r--r-- | clang/test/SemaObjC/property-13.m | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/clang/test/SemaObjC/property-13.m b/clang/test/SemaObjC/property-13.m new file mode 100644 index 0000000..2ca3416 --- /dev/null +++ b/clang/test/SemaObjC/property-13.m @@ -0,0 +1,78 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code + +@interface NSObject  ++ alloc; +- init; +@end + +@protocol Test +  @property int required; + +@optional +  @property int optional; +  @property int optional1; +  @property int optional_preexisting_setter_getter; +  @property (setter = setOptional_preexisting_setter_getter: , +	     getter = optional_preexisting_setter_getter) int optional_with_setter_getter_attr; +@required +  @property int required1; +@optional +  @property int optional_to_be_defined; +  @property (readonly, getter = optional_preexisting_setter_getter) int optional_getter_attr; +@end + +@interface Test : NSObject <Test> { +  int ivar; +  int ivar1; +  int ivar2; +} +@property int required; +@property int optional_to_be_defined; +- (int) optional_preexisting_setter_getter; +- (void) setOptional_preexisting_setter_getter:(int)value; +@end + +@implementation Test +@synthesize required = ivar; +@synthesize required1 = ivar1; +@synthesize optional_to_be_defined = ivar2; +- (int) optional_preexisting_setter_getter { return ivar; } +- (void) setOptional_preexisting_setter_getter:(int)value +	   { +		ivar = value; +	   } +- (void) setOptional_getter_attr:(int)value { ivar = value; } +@end + +void abort(void); +int main () +{ +	Test *x = [[Test alloc] init]; +	/* 1. Test of a required property */ +	x.required1 = 100; +  	if (x.required1 != 100) +	  abort (); + +	/* 2. Test of a synthesize optional property */ +  	x.optional_to_be_defined = 123; +	if (x.optional_to_be_defined != 123) +	  abort (); + +	/* 3. Test of optional property with pre-sxisting defined setter/getter */ +	x.optional_preexisting_setter_getter = 200; +	if (x.optional_preexisting_setter_getter != 200) +	  abort (); + +	/* 4. Test of optional property with setter/getter attribute */ +	if (x.optional_with_setter_getter_attr != 200) +	  abort (); +	return 0; + +	/* 5. Test of optional property with getter attribute and default setter method. */ +	x.optional_getter_attr = 1000; +        if (x.optional_getter_attr != 1000) +	  abort (); + +	return 0; +} + | 
