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