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