Douglas Gregor | 1b257af | 2012-12-11 22:11:52 +0000 | [diff] [blame] | 1 | @import redecl_merge_top; |
Douglas Gregor | a1be278 | 2011-12-17 23:38:30 +0000 | [diff] [blame] | 2 | |
3 | @class A; | ||||
4 | |||||
5 | @class A; | ||||
6 | |||||
Douglas Gregor | ecb1938 | 2011-12-19 15:27:36 +0000 | [diff] [blame] | 7 | @interface B |
Douglas Gregor | adafc2e | 2011-12-19 16:14:14 +0000 | [diff] [blame] | 8 | + (B*) create_a_B; |
Douglas Gregor | ecb1938 | 2011-12-19 15:27:36 +0000 | [diff] [blame] | 9 | @end |
10 | |||||
Douglas Gregor | a1be278 | 2011-12-17 23:38:30 +0000 | [diff] [blame] | 11 | @class A; |
Douglas Gregor | ecb1938 | 2011-12-19 15:27:36 +0000 | [diff] [blame] | 12 | |
Douglas Gregor | 27c6da2 | 2012-01-01 20:30:41 +0000 | [diff] [blame] | 13 | @protocol P1; |
14 | @protocol P2 | ||||
15 | - (void)protoMethod2; | ||||
16 | @end | ||||
17 | |||||
Douglas Gregor | 1ca4a5c | 2012-01-03 22:46:00 +0000 | [diff] [blame] | 18 | struct S1; |
19 | struct S2 { | ||||
20 | int field; | ||||
21 | }; | ||||
22 | |||||
23 | struct S1 *produce_S1(void); | ||||
24 | void consume_S2(struct S2*); | ||||
25 | |||||
Douglas Gregor | 0f75323 | 2011-12-22 01:48:48 +0000 | [diff] [blame] | 26 | // Test declarations in different modules with no common initial |
27 | // declaration. | ||||
28 | @class C; | ||||
29 | void accept_a_C(C*); | ||||
30 | |||||
31 | @class C2; | ||||
32 | void accept_a_C2(C2*); | ||||
33 | |||||
34 | @class C3; | ||||
35 | void accept_a_C3(C3*); | ||||
36 | @class C3; | ||||
37 | |||||
Douglas Gregor | c3cfd2a | 2011-12-22 21:40:42 +0000 | [diff] [blame] | 38 | @class C4; |
39 | |||||
Douglas Gregor | 2ccd89c | 2011-12-20 18:11:52 +0000 | [diff] [blame] | 40 | @class Explicit; |
41 | |||||
42 | int *explicit_func(void); | ||||
43 | |||||
44 | struct explicit_struct; | ||||
45 | |||||
Douglas Gregor | dba9361 | 2012-01-01 21:47:52 +0000 | [diff] [blame] | 46 | @protocol P3, P4; |
47 | |||||
48 | @protocol P3; | ||||
49 | |||||
Douglas Gregor | 1ca4a5c | 2012-01-03 22:46:00 +0000 | [diff] [blame] | 50 | struct S3; |
51 | struct S3; | ||||
52 | struct S4 { | ||||
53 | int field; | ||||
54 | }; | ||||
55 | |||||
56 | struct S3 *produce_S3(void); | ||||
57 | void consume_S4(struct S4*); | ||||
58 | |||||
Douglas Gregor | 7a53740 | 2012-01-03 23:26:26 +0000 | [diff] [blame] | 59 | typedef int T1; |
60 | typedef float T2; | ||||
61 | |||||
Douglas Gregor | 7076281 | 2012-01-04 17:13:46 +0000 | [diff] [blame] | 62 | int func0(int); |
Douglas Gregor | 5456b0fe | 2012-10-09 17:21:28 +0000 | [diff] [blame] | 63 | int func1(int x) { return x; } |
Douglas Gregor | 7076281 | 2012-01-04 17:13:46 +0000 | [diff] [blame] | 64 | int func2(int); |
65 | |||||
Douglas Gregor | 4791fa2 | 2012-01-04 17:21:36 +0000 | [diff] [blame] | 66 | |
67 | |||||
68 | |||||
69 | |||||
70 | |||||
71 | |||||
72 | |||||
73 | |||||
74 | |||||
75 | // Spacing matters! | ||||
76 | extern int var1; | ||||
77 | extern float var2; | ||||
78 | |||||
79 | extern double var3; | ||||
80 | |||||
Douglas Gregor | 91534a3 | 2012-01-13 23:49:34 +0000 | [diff] [blame] | 81 | // Make sure this doesn't introduce an ambiguity-creating 'id' at the |
82 | // top level. | ||||
83 | typedef void funcptr_with_id(int id); | ||||
84 |