1// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 2// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp 3 4@interface F { 5 int supervar; 6} 7@end 8 9@interface G : F { 10@public 11 int ivar; 12} 13@end 14 15@implementation G 16- (void)foo:(F *)arg { 17 int q = arg->supervar; 18 int v = ((G *)arg)->ivar; 19} 20@end 21 22void objc_assign_strongCast(id); 23void __CFAssignWithWriteBarrier(void **location, void *value) { 24 objc_assign_strongCast((id)value); 25} 26 27// radar 7607605 28@interface RealClass { 29 @public 30 int f; 31} 32@end 33 34@implementation RealClass 35@end 36 37@interface Foo { 38 id reserved; 39} 40@end 41 42@implementation Foo 43- (void)bar { 44 ((RealClass*)reserved)->f = 99; 45} 46@end 47