|  | // RUN: %clang_cc1 -triple i686-pc-windows -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp | 
|  | // RUN: %clang_cc1 -triple i686-pc-windows -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp | 
|  |  | 
|  | void *sel_registerName(const char *); | 
|  |  | 
|  | @interface Foo { | 
|  | int i; | 
|  | int rrrr; | 
|  | Foo *o; | 
|  | } | 
|  | @property int i; | 
|  | @property(readonly) int rrrr; | 
|  | @property int d; | 
|  | @property(retain) Foo *o; | 
|  |  | 
|  | - (void)foo; | 
|  | @end | 
|  |  | 
|  | @implementation Foo | 
|  | @synthesize i; | 
|  | @synthesize rrrr; | 
|  | @synthesize o; | 
|  |  | 
|  | @dynamic d; | 
|  |  | 
|  | - (void)foo { | 
|  | i = 99; | 
|  | } | 
|  |  | 
|  | - (int)bar { | 
|  | return i; | 
|  | } | 
|  | @end | 
|  |  | 
|  | @interface Bar { | 
|  | } | 
|  | @end | 
|  |  | 
|  | @implementation Bar | 
|  |  | 
|  | static int func(int i) { return 0; } | 
|  |  | 
|  | - (void)baz { | 
|  | Foo *obj1, *obj2; | 
|  | int i; | 
|  | if (obj1.i == obj2.rrrr) | 
|  | obj1.i = 33; | 
|  | obj1.i = func(obj2.rrrr); | 
|  | obj1.i = obj2.rrrr; | 
|  | obj1.i = (obj2.rrrr); | 
|  | [obj1 setI:[obj2 rrrr]]; | 
|  | obj1.i = [obj2 rrrr]; | 
|  | obj1.i = 3 + [obj2 rrrr]; | 
|  | i = obj1.o.i; | 
|  | obj1.o.i = 77; | 
|  | } | 
|  | @end |