From 77171d343b00391fe052b588d28c887031a0ce9a Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Wed, 22 Feb 2012 22:32:05 +0000 Subject: [PATCH] another test for modern ivar access rewrite. llvm-svn: 151208 --- .../rewrite-cast-ivar-modern-access.mm | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm diff --git a/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm b/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm new file mode 100644 index 000000000000..4a6cb3279fd5 --- /dev/null +++ b/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm @@ -0,0 +1,46 @@ +// 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