xref: /llvm-project/clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1// RUN: %clang_cc1 -E %s -o %t.mm
2// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
3
4void q(void (^p)(void)) {
5    p();
6}
7
8void f() {
9    __block char BYREF_VAR_CHECK = 'a';
10    __block char d = 'd';
11    q(^{
12        q(^{
13            __block char e = 'e';
14            char l = 'l';
15            BYREF_VAR_CHECK = 'b';
16            d = 'd';
17            q(^{
18                 e = '1';
19                 BYREF_VAR_CHECK = '2';
20                 d = '3';
21               }
22             );
23        });
24    });
25}
26
27int main() {
28    f();
29    return 0;
30}
31
32// CHECK: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
33// CHECK: {(void*)0,(__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, 0, sizeof(__Block_byref_BYREF_VAR_CHECK_0), 'a'}
34// CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344)));
35