redecl-merge-left.h revision b0e33d499d97b69f795cb53f8934bcd134a56b5a
1@__experimental_modules_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); 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#ifdef __cplusplus 82template<typename T> class Vector; 83 84template<typename T> class Vector; 85 86template<typename T> class List; 87template<> class List<bool> { 88public: 89 void push_back(int); 90}; 91 92namespace N { 93template<typename T> class Set { 94public: 95 void insert(T); 96}; 97} 98#endif 99 100// Make sure this doesn't introduce an ambiguity-creating 'id' at the 101// top level. 102typedef void funcptr_with_id(int id); 103 104