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