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 |
3 | // radar 7540194 |
4 | |
5 | extern "C" __declspec(dllexport) void BreakTheRewriter(int i) { |
6 | __block int aBlockVariable = 0; |
7 | void (^aBlock)(void) = ^ { |
8 | aBlockVariable = 42; |
9 | }; |
10 | aBlockVariable++; |
11 | if (i) { |
12 | __block int bbBlockVariable = 0; |
13 | void (^aBlock)(void) = ^ { |
14 | bbBlockVariable = 42; |
15 | }; |
16 | } |
17 | } |
18 | |
19 | __declspec(dllexport) extern "C" __declspec(dllexport) void XXXXBreakTheRewriter(void) { |
20 | |
21 | __block int aBlockVariable = 0; |
22 | void (^aBlock)(void) = ^ { |
23 | aBlockVariable = 42; |
24 | }; |
25 | aBlockVariable++; |
26 | void (^bBlocks)(void) = ^ { |
27 | aBlockVariable = 43; |
28 | }; |
29 | void (^c)(void) = ^ { |
30 | aBlockVariable = 44; |
31 | }; |
32 | |
33 | } |
34 | |
35 | @interface I |
36 | { |
37 | id list; |
38 | } |
39 | - (void) Meth; |
40 | // radar 7589385 use before definition |
41 | - (void) allObjects; |
42 | @end |
43 | |
44 | @implementation I |
45 | // radar 7589385 use before definition |
46 | - (void) allObjects { |
47 | __attribute__((__blocks__(byref))) id *listp; |
48 | |
49 | ^(void) { |
50 | *listp++ = 0; |
51 | }; |
52 | } |
53 | - (void) Meth { __attribute__((__blocks__(byref))) void ** listp = (void **)list; } |
54 | @end |
55 | |
56 | // $CLANG -cc1 -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ -fblocks bug.mm |
57 | // g++ -c -D"__declspec(X)=" bug.cpp |
58 | |