@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 x) { return x; } int func1(int); static int func2(int); // Spacing matters! extern int var1; extern int var2; static double var3; int ONE; @import redecl_merge_top.Explicit; const int one = ONE; @interface ClassWithDef - (void)method; @end void eventually_noreturn(void) __attribute__((noreturn)); void eventually_noreturn2(void) __attribute__((noreturn));