// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp | |
// 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 | |
@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 |