From f27e5a09a0d815b8a4814152954ff87dadfdefc0 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 2 Jun 2009 17:58:47 +0000 Subject: Import Clang, at r72732. --- test/CodeGenObjC/property-aggr-type.m | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/CodeGenObjC/property-aggr-type.m (limited to 'test/CodeGenObjC/property-aggr-type.m') diff --git a/test/CodeGenObjC/property-aggr-type.m b/test/CodeGenObjC/property-aggr-type.m new file mode 100644 index 0000000..0cb7a5e --- /dev/null +++ b/test/CodeGenObjC/property-aggr-type.m @@ -0,0 +1,50 @@ +// RUN: clang-cc -fnext-runtime -emit-llvm -o %t %s + +@interface Object +- (id) new; +@end + +typedef struct {int x, y, w, h;} st1; +typedef struct {int x, y, w, h;} st2; + +@interface bar : Object +- (void)setFrame:(st1)frameRect; +@end + +@interface bar1 : Object +- (void)setFrame:(int)frameRect; +@end + +@interface foo : Object +{ + st2 ivar; +} +@property (assign) st2 frame; +@end + +@implementation foo +@synthesize frame = ivar; +@end + +extern void abort(); + +static st2 r = {1,2,3,4}; +st2 test (void) +{ + foo *obj = [foo new]; + id objid = [foo new];; + + obj.frame = r; + + ((foo*)objid).frame = obj.frame; + + return ((foo*)objid).frame; +} + +int main () +{ + st2 res = test (); + if (res.x != 1 || res.h != 4) + abort(); + return 0; +} -- cgit v1.1