xref: /aosp_15_r20/external/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2*67e74705SXin Li// 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
3*67e74705SXin Li
4*67e74705SXin Li@interface F {
5*67e74705SXin Li  int supervar;
6*67e74705SXin Li}
7*67e74705SXin Li@end
8*67e74705SXin Li
9*67e74705SXin Li@interface G : F {
10*67e74705SXin Li@public
11*67e74705SXin Li  int ivar;
12*67e74705SXin Li}
13*67e74705SXin Li@end
14*67e74705SXin Li
15*67e74705SXin Li@implementation G
16*67e74705SXin Li- (void)foo:(F *)arg {
17*67e74705SXin Li        int q = arg->supervar;
18*67e74705SXin Li        int v = ((G *)arg)->ivar;
19*67e74705SXin Li}
20*67e74705SXin Li@end
21*67e74705SXin Li
22*67e74705SXin Livoid objc_assign_strongCast(id);
23*67e74705SXin Livoid __CFAssignWithWriteBarrier(void **location, void *value) {
24*67e74705SXin Li        objc_assign_strongCast((id)value);
25*67e74705SXin Li}
26*67e74705SXin Li
27*67e74705SXin Li// radar 7607605
28*67e74705SXin Li@interface RealClass {
29*67e74705SXin Li        @public
30*67e74705SXin Li        int f;
31*67e74705SXin Li}
32*67e74705SXin Li@end
33*67e74705SXin Li
34*67e74705SXin Li@implementation RealClass
35*67e74705SXin Li@end
36*67e74705SXin Li
37*67e74705SXin Li@interface Foo {
38*67e74705SXin Li        id reserved;
39*67e74705SXin Li}
40*67e74705SXin Li@end
41*67e74705SXin Li
42*67e74705SXin Li@implementation Foo
43*67e74705SXin Li- (void)bar {
44*67e74705SXin Li        ((RealClass*)reserved)->f = 99;
45*67e74705SXin Li}
46*67e74705SXin Li@end
47