| /* APPLE LOCAL file radar 5140757 */ |
| /* Check that compound assignment to properties when rhs is a gimplifiable |
| expression works. Program should build with no ICE or error. */ |
| /* { dg-options "-fobjc-new-property -mmacosx-version-min=10.5 -framework Foundation" } */ |
| /* { dg-do run } */ |
| |
| #include <Foundation/Foundation.h> |
| #include <stdio.h> |
| |
| @interface NSString (FileSync_Additions) |
| @property(readonly) NSString* _name; |
| @property(readonly) NSString* _path; |
| @property(readonly) BOOL isADName; |
| @property(readonly) BOOL isADPath; |
| |
| + (NSString*) stringWithFileSystemRepresentation:(const char*)str; |
| + (NSString*) stringWithFileSystemRepresentation:(const char*)str length:(NSUInteger)len; |
| |
| - (BOOL) isEqualToPath:(NSString*)path; |
| - (NSMutableString*) stringByPrefixingLinesWithString:(NSString*)prefix; |
| - (const UniChar*) unicode; |
| @end |
| |
| // -------------------------------------------------------------------------------------- |
| |
| @interface NSMutableString (FileSync_Additions) |
| - (NSMutableString*) prefixLinesWithString:(NSString*)prefix; |
| @end |
| |
| // -------------------------------------------------------------------------------------- |
| |
| |
| @interface TestObj : NSObject |
| { |
| TestObj* _i1; |
| TestObj* _i2; |
| TestObj* _i3; |
| } |
| @property(readonly,retain) TestObj* i1; |
| @property(readonly,retain) TestObj* i2; |
| @property(readwrite,retain) TestObj* i3; |
| @end |
| |
| @interface TestObj () |
| @property(readwrite,retain) TestObj* i1; |
| @property(readwrite,retain) TestObj* i2; |
| @end |
| |
| |
| @implementation TestObj |
| @synthesize i1 = _i1; |
| @synthesize i2 = _i2; |
| @synthesize i3 = _i3; |
| |
| - (id) init |
| { |
| self = [super init]; |
| self.i1 = self.i2 = self.i3 = self; |
| return self; |
| } |
| |
| @end |
| |
| |
| const char* gProcessName; |
| |
| const char* _last_path_comp(const char* fullPath) |
| { |
| char* result = strrchr(fullPath, '/'); |
| if (result != nil) return ++result; |
| return fullPath; |
| } // _last_path_comp |
| |
| // -------------------------------------------------------------------------------------- |
| |
| int main(int argc, char* argv[]) |
| { |
| gProcessName = _last_path_comp(argv[0]); |
| NSAutoreleasePool* pool = [NSAutoreleasePool new]; |
| |
| TestObj* obj = [[TestObj new] autorelease]; |
| |
| [pool drain]; |
| return 0; |
| } // main |