1// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-fragile-abi %s -o %t-rw.cpp 2// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -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"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp 5// radar 7696893 6 7void *sel_registerName(const char *); 8 9void f(void (^block)(void)); 10void f2(id); 11void f3(int); 12char f4(id, id); 13 14@interface Baz 15- (void)b:(void (^)(void))block; 16@end 17 18@interface Bar 19@end 20 21@interface Foo { 22 int _x; 23} 24@end 25 26@implementation Foo 27- (void)method:(Bar *)up { 28 Baz *down; 29 int at; 30 id cq; 31 __block char didit = 'a'; 32 __block char upIsFinished = 'b'; 33 f(^{ 34 id old_cq; 35 f2(cq); 36 [down b:^{ 37 [down b:^{ 38 f(^{ 39 didit = f4(up, down); 40 upIsFinished = 'c'; 41 self->_x++; 42 }); 43 }]; 44 }]; 45 f2(old_cq); 46 f3(at); 47 }); 48} 49@end 50