redecl-merge-left.h revision 3dd82f7f01a9ba995bea3027a934df85850cab58
1@__experimental_modules_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
18struct S1;
19struct S2 {
20  int field;
21};
22
23struct S1 *produce_S1(void);
24void consume_S2(struct S2*);
25
26// Test declarations in different modules with no common initial
27// declaration.
28@class C;
29void accept_a_C(C*);
30
31@class C2;
32void accept_a_C2(C2*);
33
34@class C3;
35void accept_a_C3(C3*);
36@class C3;
37
38@class C4;
39
40@class Explicit;
41
42int *explicit_func(void);
43
44struct explicit_struct;
45
46@protocol P3, P4;
47
48@protocol P3;
49
50struct S3;
51struct S3;
52struct S4 {
53  int field;
54};
55
56struct S3 *produce_S3(void);
57void consume_S4(struct S4*);
58
59typedef int T1;
60typedef float T2;
61
62int func0(int);
63int func1(int);
64int func2(int);
65
66
67
68
69
70
71
72
73
74
75// Spacing matters!
76extern int var1;
77extern float var2;
78
79extern double var3;
80
81#ifdef __cplusplus
82template<typename T> class Vector;
83
84template<typename T> class Vector;
85
86template<typename T> class List;
87template<> class List<bool> {
88public:
89  void push_back(int);
90};
91namespace N {
92  template<typename T> class Set;
93}
94namespace N {
95  template<typename T> class Set {
96  public:
97    void insert(T);
98  };
99}
100#endif
101
102// Make sure this doesn't introduce an ambiguity-creating 'id' at the
103// top level.
104typedef void funcptr_with_id(int id);
105
106