[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / clang / test / Rewriter / rewrite-modern-block.mm
blob926ee36f1a4ad9aeb54bf568c68bd2afb3d5e950
1 // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2 // RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
3 // rdar://11230308
5 typedef unsigned long size_t;
6 typedef struct {
7     char byte0;
8     char byte1;
9 } CFUUIDBytes;
11 void x(void *);
13 void y() {
14     __block CFUUIDBytes bytes;
15     
16     void (^bar)() = ^{
17         x(&bytes);
18     };
21 // rdar://11236342
22 int foo() {
23     __block int hello;
24     return hello;
27 // rdar://7547630
28 // rewriting multiple __block decls on wintin same decl stmt.
29 void radar7547630() {
30   __block int BI1, BI2;
32   __block float FLOAT1, FT2, FFFFFFFF3,
33    FFFXXX4;
35   __block void (^B)(), (^BB)();
38 // rewriting multiple __block decls on wintin same decl stmt
39 // with initializers.
40 int  rdar7547630(const char *keybuf, const char *valuebuf) {
41   __block int BI1 = 1, BI2 = 2;
43   double __block BYREFVAR = 1.34, BYREFVAR_NO_INIT, BYREFVAR2 = 1.37;
45   __block const char *keys = keybuf, *values = valuebuf, *novalues;
47   return BI2;
50 // rdar://11326988
51 typedef struct _z {
52     int location;
53     int length;
54 } z;
56 z w(int loc, int len);
58 @interface rdar11326988
59 @end
60 @implementation rdar11326988 
61 - (void)y:(int)options {
62     __attribute__((__blocks__(byref))) z firstRange = w(1, 0);
63     options &= ~(1 | 2);
65 @end
67 // rdar://18799145
68 int Test18799145() { return ^(){return 0;}(); }