summaryrefslogtreecommitdiff
path: root/clang/test/Modules/Inputs/redecl-merge-right.h
blob: de7aa08cfb2b4bdcd86d038217c631c732623a9e (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
@__experimental_modules_import redecl_merge_top;

@interface Super
@end

@interface A : Super
- (Super*)init;
@end

@class B;

@protocol P1
- (void)protoMethod1;
@end

@protocol P1;

@protocol P2;

@protocol P2;

@protocol P2;

struct S1;
struct S2;

void consume_S1(struct S1*);
struct S2 *produce_S2(void);

// Test declarations in different modules with no common initial
// declaration.
@class C;
C *get_a_C(void);
@class C2;
C2 *get_a_C2(void);
@class C3;
C3 *get_a_C3(void);

@class C4;
@class C4;
@class C4;
@class C4;
C4 *get_a_C4(void);

@class Explicit;

int *explicit_func(void);

struct explicit_struct;

@protocol P4, P3;
@protocol P3;
@protocol P3;
@protocol P3;

struct S3;
struct S4;

void consume_S3(struct S3*);
struct S4 *produce_S4(void);

typedef int T1;
typedef double T2;

int func0(int);
int func1(int);
int func1(int);
int func1(int);
int func1(int);
static int func2(int);




// Spacing matters!
extern int var1;
extern int var2;

static double var3;

#ifdef __cplusplus
template<typename T> class Vector { 
public:
  void push_back(const T&);
};
#endif

int ONE;
@__experimental_modules_import redecl_merge_top.Explicit;
const int one = ONE;

@interface ClassWithDef 
- (void)method;
@end