// 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
