llvm-project/clang/test/ASTMerge/struct/Inputs/struct1.c

142 lines
1.8 KiB
C

typedef int Int;
typedef float Float;
// Matches
struct S0 {
Int field1;
Float field2;
};
struct S0 x0;
// Mismatch in field type
struct S1 {
Int field1;
int field2;
};
struct S1 x1;
// Mismatch in tag kind.
struct S2 { int i; float f; } x2;
// Missing fields
struct S3 { int i; float f; double d; } x3;
// Extra fields
struct S4 { int i; } x4;
// Bit-field matches
struct S5 { int i : 8; unsigned j : 8; } x5;
// Bit-field mismatch
struct S6 { int i : 8; unsigned j : 8; } x6;
// Bit-field mismatch
struct S7 { int i : 8; unsigned j : 8; } x7;
// Incomplete type
struct S8 *x8;
// Incomplete type
struct S9 { int i; float f; } *x9;
// Incomplete type
struct S10 *x10;
// Matches
struct ListNode {
int value;
struct ListNode *Next;
} xList;
// Mismatch due to struct used internally
struct DeepError {
int value;
struct DeeperError { int i; int f; } *Deeper;
} xDeep;
// Matches
struct {
Int i;
float f;
} x11;
// Matches
typedef struct {
Int i;
float f;
} S12;
S12 x12;
// Mismatch
typedef struct {
Float i; // Mismatch here.
float f;
} S13;
S13 x13;
// Matches
struct Unnamed {
union {
struct {
int i;
} S;
struct {
float i;
} R;
} U;
} x14;
// Matches
struct DeepUnnamed {
union {
union {
struct {
long i;
} S;
struct {
int i;
} R;
} U1;
union {
struct {
long i;
} S;
struct {
float i;
} T;
} U2;
} U;
struct {
long i;
} V;
} x15;
// Mismatch due to unnamed struct used internally
struct DeepUnnamedError {
union {
union {
struct {
long i;
} S;
struct {
int i;
} R;
} U1;
union {
struct {
long i; // Mismatch here.
} S;
struct {
float i;
} T;
} U2;
} U;
struct {
long i;
} V;
} x16;