1*67e74705SXin Li @import redecl_merge_top; 2*67e74705SXin Li 3*67e74705SXin Li @class A; 4*67e74705SXin Li 5*67e74705SXin Li @class A; 6*67e74705SXin Li 7*67e74705SXin Li @interface B 8*67e74705SXin Li + (B*) create_a_B; 9*67e74705SXin Li @end 10*67e74705SXin Li 11*67e74705SXin Li @class A; 12*67e74705SXin Li 13*67e74705SXin Li @protocol P1; 14*67e74705SXin Li @protocol P2 15*67e74705SXin Li - (void)protoMethod2; 16*67e74705SXin Li @end 17*67e74705SXin Li 18*67e74705SXin Li struct S1; 19*67e74705SXin Li struct S2 { 20*67e74705SXin Li int field; 21*67e74705SXin Li }; 22*67e74705SXin Li 23*67e74705SXin Li struct S1 *produce_S1(void); 24*67e74705SXin Li void consume_S2(struct S2*); 25*67e74705SXin Li 26*67e74705SXin Li // Test declarations in different modules with no common initial 27*67e74705SXin Li // declaration. 28*67e74705SXin Li @class C; 29*67e74705SXin Li void accept_a_C(C*); 30*67e74705SXin Li 31*67e74705SXin Li @class C2; 32*67e74705SXin Li void accept_a_C2(C2*); 33*67e74705SXin Li 34*67e74705SXin Li @class C3; 35*67e74705SXin Li void accept_a_C3(C3*); 36*67e74705SXin Li @class C3; 37*67e74705SXin Li 38*67e74705SXin Li @class C4; 39*67e74705SXin Li 40*67e74705SXin Li @class Explicit; 41*67e74705SXin Li 42*67e74705SXin Li int *explicit_func(void); 43*67e74705SXin Li 44*67e74705SXin Li struct explicit_struct; 45*67e74705SXin Li 46*67e74705SXin Li @protocol P3, P4; 47*67e74705SXin Li 48*67e74705SXin Li @protocol P3; 49*67e74705SXin Li 50*67e74705SXin Li struct S3; 51*67e74705SXin Li struct S3; 52*67e74705SXin Li struct S4 { 53*67e74705SXin Li int field; 54*67e74705SXin Li }; 55*67e74705SXin Li 56*67e74705SXin Li struct S3 *produce_S3(void); 57*67e74705SXin Li void consume_S4(struct S4*); 58*67e74705SXin Li 59*67e74705SXin Li typedef int T1; 60*67e74705SXin Li typedef float T2; 61*67e74705SXin Li 62*67e74705SXin Li int func0(int); func1(int x)63*67e74705SXin Liint func1(int x) { return x; } 64*67e74705SXin Li int func2(int); 65*67e74705SXin Li 66*67e74705SXin Li 67*67e74705SXin Li 68*67e74705SXin Li 69*67e74705SXin Li 70*67e74705SXin Li 71*67e74705SXin Li 72*67e74705SXin Li 73*67e74705SXin Li 74*67e74705SXin Li 75*67e74705SXin Li // Spacing matters! 76*67e74705SXin Li extern int var1; 77*67e74705SXin Li extern float var2; 78*67e74705SXin Li 79*67e74705SXin Li extern double var3; 80*67e74705SXin Li 81*67e74705SXin Li // Make sure this doesn't introduce an ambiguity-creating 'id' at the 82*67e74705SXin Li // top level. 83*67e74705SXin Li typedef void funcptr_with_id(int id); 84*67e74705SXin Li 85*67e74705SXin Li // A class that is declared in the 'bottom' module, then loaded from 86*67e74705SXin Li // one of the modules it depends on. 87*67e74705SXin Li @interface DeclaredThenLoaded 88*67e74705SXin Li - declaredThenLoadedMethod; 89*67e74705SXin Li @end 90*67e74705SXin Li 91*67e74705SXin Li @class DeclaredThenLoaded; 92*67e74705SXin Li 93*67e74705SXin Li void eventually_noreturn2(void); 94