1 | // RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp |
2 | // RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp |
3 | |
4 | @protocol P @end |
5 | @protocol P1 @end |
6 | @interface INTF |
7 | { |
8 | id CLASS_IVAR; |
9 | id<P, P1> Q_IVAR; |
10 | |
11 | void (^_block)(id<P>); |
12 | void (*_fptr)(void (^_block)(id<P>)); |
13 | char CLASS_EXT_IVAR; |
14 | id<P, P1> (^ext_block)(id<P>, INTF<P,P1>*, INTF*); |
15 | id IMPL_IVAR; |
16 | double D_IMPL_IVAR; |
17 | INTF<P> *(*imp_fptr)(void (^_block)(id<P>, INTF<P,P1>*)); |
18 | id arr[100]; |
19 | } |
20 | @end |
21 | |
22 | @implementation INTF @end |
23 | |
24 | @interface MISC_INTF |
25 | { |
26 | id CLASS_IVAR; |
27 | id<P, P1> Q_IVAR; |
28 | |
29 | void (^_block)(id<P>); |
30 | void (*_fptr)(void (^_block)(id<P>)); |
31 | unsigned int BF : 8; |
32 | } |
33 | @end |
34 | |
35 | @interface MISC_INTF() |
36 | { |
37 | char CLASS_EXT_IVAR; |
38 | id<P, P1> (^ext_block)(id<P>, MISC_INTF<P,P1>*, MISC_INTF*); |
39 | } |
40 | @end |
41 | |
42 | @interface MISC_INTF() { |
43 | int II1; |
44 | double DD1; } |
45 | @end |
46 | |
47 | @interface MISC_INTF() { int II2; double DD2; } |
48 | @end |
49 | |
50 | @interface MISC_INTF() { int II3; |
51 | double DD3; } |
52 | @end |
53 | |
54 | @interface MISC_INTF() { int II4; double DD4; |
55 | } |
56 | @end |
57 | |
58 | @implementation MISC_INTF |
59 | { |
60 | id IMPL_IVAR; |
61 | double D_IMPL_IVAR; |
62 | MISC_INTF<P> *(*imp_fptr)(void (^_block)(id<P>, MISC_INTF<P,P1>*)); |
63 | } |
64 | @end |
65 | |