| // RUN: %clang_cc1 -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; |
| } |