94 lines
1.2 KiB
C
94 lines
1.2 KiB
C
|
@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);
|