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