1@import redecl_merge_top;
2
3@interface Super
4@end
5
6@interface A : Super
7- (Super*)init;
8@end
9
10@class B;
11
12@protocol P1
13- (void)protoMethod1;
14@end
15
16@protocol P1;
17
18@protocol P2;
19
20@protocol P2;
21
22@protocol P2;
23
24struct S1;
25struct S2;
26
27void consume_S1(struct S1*);
28struct S2 *produce_S2(void);
29
30// Test declarations in different modules with no common initial
31// declaration.
32@class C;
33C *get_a_C(void);
34@class C2;
35C2 *get_a_C2(void);
36@class C3;
37C3 *get_a_C3(void);
38
39@class C4;
40@class C4;
41@class C4;
42@class C4;
43C4 *get_a_C4(void);
44
45@class Explicit;
46
47int *explicit_func(void);
48
49struct explicit_struct;
50
51@protocol P4, P3;
52@protocol P3;
53@protocol P3;
54@protocol P3;
55
56struct S3;
57struct S4;
58
59void consume_S3(struct S3*);
60struct S4 *produce_S4(void);
61
62typedef int T1;
63typedef double T2;
64
65int func0(int);
66int func1(int);
67int func1(int);
68int func1(int x) { return x; }
69int func1(int);
70static int func2(int);
71
72
73
74
75// Spacing matters!
76extern int var1;
77extern int var2;
78
79static double var3;
80
81int ONE;
82@import redecl_merge_top.Explicit;
83const int one = ONE;
84
85@interface ClassWithDef
86- (void)method;
87@end
88
89void eventually_noreturn(void) __attribute__((noreturn));
90void eventually_noreturn2(void) __attribute__((noreturn));
91