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