1 | @import redecl_merge_top; |
2 | |
3 | @class A; |
4 | |
5 | @class A; |
6 | |
7 | @interface B |
8 | + (B*) create_a_B; |
9 | @end |
10 | |
11 | @class A; |
12 | |
13 | @protocol P1; |
14 | @protocol P2 |
15 | - (void)protoMethod2; |
16 | @end |
17 | |
18 | struct S1; |
19 | struct S2 { |
20 | int field; |
21 | }; |
22 | |
23 | struct S1 *produce_S1(void); |
24 | void consume_S2(struct S2*); |
25 | |
26 | // Test declarations in different modules with no common initial |
27 | // declaration. |
28 | @class C; |
29 | void accept_a_C(C*); |
30 | |
31 | @class C2; |
32 | void accept_a_C2(C2*); |
33 | |
34 | @class C3; |
35 | void accept_a_C3(C3*); |
36 | @class C3; |
37 | |
38 | @class C4; |
39 | |
40 | @class Explicit; |
41 | |
42 | int *explicit_func(void); |
43 | |
44 | struct explicit_struct; |
45 | |
46 | @protocol P3, P4; |
47 | |
48 | @protocol P3; |
49 | |
50 | struct S3; |
51 | struct S3; |
52 | struct S4 { |
53 | int field; |
54 | }; |
55 | |
56 | struct S3 *produce_S3(void); |
57 | void consume_S4(struct S4*); |
58 | |
59 | typedef int T1; |
60 | typedef float T2; |
61 | |
62 | int func0(int); |
63 | int func1(int x) { return x; } |
64 | int func2(int); |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | // Spacing matters! |
76 | extern int var1; |
77 | extern float var2; |
78 | |
79 | extern double var3; |
80 | |
81 | // Make sure this doesn't introduce an ambiguity-creating 'id' at the |
82 | // top level. |
83 | typedef void funcptr_with_id(int id); |
84 | |
85 | // A class that is declared in the 'bottom' module, then loaded from |
86 | // one of the modules it depends on. |
87 | @interface DeclaredThenLoaded |
88 | - declaredThenLoadedMethod; |
89 | @end |
90 | |
91 | @class DeclaredThenLoaded; |
92 | |
93 | void eventually_noreturn2(void); |
94 | |