xref: /aosp_15_r20/external/clang/test/Rewriter/rewrite-nested-blocks-1.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
2*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
3*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
4*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
5*67e74705SXin Li// radar 7696893
6*67e74705SXin Li
7*67e74705SXin Litypedef unsigned long size_t;
8*67e74705SXin Livoid *sel_registerName(const char *);
9*67e74705SXin Li
10*67e74705SXin Livoid f(void (^block)(void));
11*67e74705SXin Livoid f2(id);
12*67e74705SXin Livoid f3(int);
13*67e74705SXin Lichar f4(id, id);
14*67e74705SXin Li
15*67e74705SXin Li@interface Baz
16*67e74705SXin Li- (void)b:(void (^)(void))block;
17*67e74705SXin Li@end
18*67e74705SXin Li
19*67e74705SXin Li@interface Bar
20*67e74705SXin Li@end
21*67e74705SXin Li
22*67e74705SXin Li@interface Foo {
23*67e74705SXin Li	int _x;
24*67e74705SXin Li}
25*67e74705SXin Li@end
26*67e74705SXin Li
27*67e74705SXin Li@implementation Foo
28*67e74705SXin Li- (void)method:(Bar *)up {
29*67e74705SXin Li    Baz *down;
30*67e74705SXin Li	int at;
31*67e74705SXin Li    id cq;
32*67e74705SXin Li    __block char didit = 'a';
33*67e74705SXin Li    __block char upIsFinished = 'b';
34*67e74705SXin Li    f(^{
35*67e74705SXin Li            id old_cq;
36*67e74705SXin Li			f2(cq);
37*67e74705SXin Li            [down b:^{
38*67e74705SXin Li                    [down b:^{
39*67e74705SXin Li                            f(^{
40*67e74705SXin Li                                    didit = f4(up, down);
41*67e74705SXin Li									upIsFinished = 'c';
42*67e74705SXin Li                                    self->_x++;
43*67e74705SXin Li                                });
44*67e74705SXin Li                        }];
45*67e74705SXin Li                }];
46*67e74705SXin Li				f2(old_cq);
47*67e74705SXin Li			f3(at);
48*67e74705SXin Li    });
49*67e74705SXin Li}
50*67e74705SXin Li@end
51