| // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp |
| // RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp |
| |
| @interface F { |
| int supervar; |
| } |
| @end |
| |
| @interface G : F { |
| @public |
| int ivar; |
| } |
| @end |
| |
| @implementation G |
| - (void)foo:(F *)arg { |
| int q = arg->supervar; |
| int v = ((G *)arg)->ivar; |
| } |
| @end |
| |
| void objc_assign_strongCast(id); |
| void __CFAssignWithWriteBarrier(void **location, void *value) { |
| objc_assign_strongCast((id)value); |
| } |
| |
| // radar 7607605 |
| @interface RealClass { |
| @public |
| int f; |
| } |
| @end |
| |
| @implementation RealClass |
| @end |
| |
| @interface Foo { |
| id reserved; |
| } |
| @end |
| |
| @implementation Foo |
| - (void)bar { |
| ((RealClass*)reserved)->f = 99; |
| } |
| @end |