[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / Rewriter / rewrite-byref-vars.mm
blob41f4e8d9734a1084e3d682cb7b15d300bc28cd4c
1 // 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 // RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
4 extern "C" __declspec(dllexport) void BreakTheRewriter(int i) {
5         __block int aBlockVariable = 0;
6         void (^aBlock)(void) = ^ {
7                 aBlockVariable = 42;
8         };
9         aBlockVariable++;
10         if (i) {
11           __block int bbBlockVariable = 0;
12           void (^aBlock)(void) = ^ {
13                 bbBlockVariable = 42;
14           };
15         }
18 __declspec(dllexport) extern "C" __declspec(dllexport) void XXXXBreakTheRewriter(void) {
20         __block int aBlockVariable = 0;
21         void (^aBlock)(void) = ^ {
22                 aBlockVariable = 42;
23         };
24         aBlockVariable++;
25         void (^bBlocks)(void) = ^ {
26                 aBlockVariable = 43;
27         };
28         void (^c)(void) = ^ {
29                 aBlockVariable = 44;
30         };
34 @interface I
36    id list;
38 - (void) Meth;
39 // use before definition
40 - (void) allObjects;
41 @end
43 @implementation I
44 // use before definition
45 - (void) allObjects {
46     __attribute__((__blocks__(byref))) id *listp;
48     ^(void) {
49       *listp++ = 0;
50     };
52 - (void) Meth { __attribute__((__blocks__(byref))) void ** listp = (void **)list; }
53 @end
55 // $CLANG -cc1 -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ -fblocks bug.mm
56 // g++ -c -D"__declspec(X)=" bug.cpp