blob: 212b2365dfcc3b42193778bde510690bca79fbac [file] [log] [blame]
Fariborz Jahanian52b2e1e2010-02-12 17:52:31 +00001// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
Fariborz Jahanian264e1592010-02-16 22:13:48 +00002// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
Fariborz Jahanian52b2e1e2010-02-12 17:52:31 +00003// radar 7638400
4
Fariborz Jahanian264e1592010-02-16 22:13:48 +00005typedef void * id;
Fariborz Jahanian86aa9fd2010-02-24 01:25:40 +00006void *sel_registerName(const char *);
Fariborz Jahanian264e1592010-02-16 22:13:48 +00007
Fariborz Jahanian52b2e1e2010-02-12 17:52:31 +00008@interface X
9@end
10
11void foo(void (^block)(int));
12
13@implementation X
14static void enumerateIt(void (^block)(id, id, char *)) {
15 foo(^(int idx) { });
16}
17@end
18
Fariborz Jahanian210c2482010-02-16 17:26:03 +000019// radar 7651312
20void apply(void (^block)(int));
21
22static void x(int (^cmp)(int, int)) {
23 x(cmp);
24}
25
26static void y(int (^cmp)(int, int)) {
27 apply(^(int sect) {
28 x(cmp);
29 });
30}
Fariborz Jahanianafad76f2010-02-18 01:20:22 +000031
32// radar 7659483
33void *_Block_copy(const void *aBlock);
34void x(void (^block)(void)) {
35 block = ((__typeof(block))_Block_copy((const void *)(block)));
36}
Fariborz Jahanian86aa9fd2010-02-24 01:25:40 +000037
Fariborz Jahanian170ee0c2010-02-24 01:37:04 +000038// radar 7682763
Fariborz Jahanian86aa9fd2010-02-24 01:25:40 +000039@interface Y {
40@private
41 id _private;
42}
43- (void (^)(void))f;
44@end
45
46typedef void (^void_block_t)(void);
47
48@interface YY {
49 void_block_t __completion;
50}
51@property (copy) void_block_t f;
52@end
53
54@implementation Y
55- (void (^)(void))f {
56 return [_private f];
57}
58
59@end
60