blob: 57bfa4624e0b020a56c126209d697c15de0a02d3 [file] [log] [blame]
/* 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