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