| @import redecl_merge_top; |
| |
| @class A; |
| |
| @class A; |
| |
| @interface B |
| + (B*) create_a_B; |
| @end |
| |
| @class A; |
| |
| @protocol P1; |
| @protocol P2 |
| - (void)protoMethod2; |
| @end |
| |
| struct S1; |
| struct S2 { |
| int field; |
| }; |
| |
| struct S1 *produce_S1(void); |
| void consume_S2(struct S2*); |
| |
| // Test declarations in different modules with no common initial |
| // declaration. |
| @class C; |
| void accept_a_C(C*); |
| |
| @class C2; |
| void accept_a_C2(C2*); |
| |
| @class C3; |
| void accept_a_C3(C3*); |
| @class C3; |
| |
| @class C4; |
| |
| @class Explicit; |
| |
| int *explicit_func(void); |
| |
| struct explicit_struct; |
| |
| @protocol P3, P4; |
| |
| @protocol P3; |
| |
| struct S3; |
| struct S3; |
| struct S4 { |
| int field; |
| }; |
| |
| struct S3 *produce_S3(void); |
| void consume_S4(struct S4*); |
| |
| typedef int T1; |
| typedef float T2; |
| |
| int func0(int); |
| int func1(int x) { return x; } |
| int func2(int); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // Spacing matters! |
| extern int var1; |
| extern float var2; |
| |
| extern double var3; |
| |
| // Make sure this doesn't introduce an ambiguity-creating 'id' at the |
| // top level. |
| typedef void funcptr_with_id(int id); |
| |
| // A class that is declared in the 'bottom' module, then loaded from |
| // one of the modules it depends on. |
| @interface DeclaredThenLoaded |
| - declaredThenLoadedMethod; |
| @end |
| |
| @class DeclaredThenLoaded; |
| |
| void eventually_noreturn2(void); |