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