107 lines · plain
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.cpp2// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp3// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp4// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp5 6typedef unsigned long size_t;7 8typedef void * id;9void *sel_registerName(const char *);10 11@interface X12@end13 14void foo(void (^block)(int));15 16@implementation X17static void enumerateIt(void (^block)(id, id, char *)) {18 foo(^(int idx) { });19}20@end21 22void apply(void (^block)(int));23 24static void x(int (^cmp)(int, int)) {25 x(cmp);26}27 28static void y(int (^cmp)(int, int)) {29 apply(^(int sect) {30 x(cmp);31 });32}33 34void *_Block_copy(const void *aBlock);35void x(void (^block)(void)) {36 block = ((__typeof(block))_Block_copy((const void *)(block)));37}38 39@interface Y {40@private41 id _private;42}43- (void (^)(void))f;44@end45 46typedef void (^void_block_t)(void);47 48@interface YY {49 void_block_t __completion;50}51@property (copy) void_block_t f;52@end53 54@implementation Y55- (void (^)(void))f {56 return [_private f];57}58 59@end60 61@protocol CoreDAVAccountInfoProvider;62@protocol CodeProvider;63typedef void (^BDVDiscoveryCompletionHandler)(int success, id<CoreDAVAccountInfoProvider> discoveredInfo);64typedef void (^BDVDiscoveryCompletion)(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);65typedef void (^BDVDiscovery)(int success);66typedef void (^BDVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo, 67 int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);68typedef void (^BLOCK)(id, id<CoreDAVAccountInfoProvider>, id<CodeProvider> codeInfo);69typedef void (^EMPTY_BLOCK)();70typedef void (^ BDVDiscoveryCompletion1 )(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);71 72void (^BL)(void(^arg1)(), int i1, void(^arg)(int));73 74typedef void (^iscoveryCompletionHandler)(void(^arg1)(), id<CoreDAVAccountInfoProvider> discoveredInfo);75 76typedef void (^DVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo,77 void(^arg1)(), int i1, void(^arg)(id<CoreDAVAccountInfoProvider>),78 int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);79 80 81@interface I @end82@interface INTF @end83void (^BLINT)(I<CoreDAVAccountInfoProvider>* ARG, INTF<CodeProvider, CoreDAVAccountInfoProvider>* ARG1);84 85void test8608902() {86 BDVDiscoveryCompletionHandler ppp;87 ppp(1, 0);88}89 90void test9204669() {91 __attribute__((__blocks__(byref))) char (^addChangeToData)();92 93 addChangeToData = ^() {94 return 'b';95 };96 addChangeToData();97}98 99void test9204669_1() {100 __attribute__((__blocks__(byref))) void (^addChangeToData)();101 102 addChangeToData = ^() {103 addChangeToData();104 };105}106 107