Home | History | Annotate | Download | only in Rewriter
      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 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
      3 // RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
      4 // RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
      5 // radar 7682149
      6 
      7 
      8 typedef unsigned long size_t;
      9 void f(void (^block)(void));
     10 
     11 @interface X {
     12 	int y;
     13 }
     14 - (void)foo;
     15 @end
     16 
     17 @implementation X
     18 - (void)foo {
     19     f(^{
     20   f(^{
     21     f(^{
     22       y=42;
     23     });
     24   });
     25 });
     26 
     27 }
     28 @end
     29 
     30 struct S {
     31   int y;
     32 };
     33 
     34 void foo () {
     35 	struct S *SELF;
     36 	f(^{
     37 		f(^{
     38 			SELF->y = 42;
     39 		});
     40 	});
     41 }
     42 
     43 // radar 7692419
     44 @interface Bar
     45 @end
     46 
     47 void f(Bar *);
     48 void q(void (^block)(void));
     49 
     50 void x() {
     51         void (^myblock)(Bar *b) = ^(Bar *b) {
     52                 q(^{
     53                         f(b);   
     54                 });
     55         };
     56         
     57         Bar *b = (Bar *)42;
     58         myblock(b);
     59 }
     60