142 lines · c
1typedef int Int;2typedef float Float;3 4// Matches5struct S0 {6 Int field1;7 Float field2;8};9 10struct S0 x0;11 12// Mismatch in field type13struct S1 {14 Int field1;15 int field2;16};17 18struct S1 x1;19 20// Mismatch in tag kind.21struct S2 { int i; float f; } x2;22 23// Missing fields24struct S3 { int i; float f; double d; } x3;25 26// Extra fields27struct S4 { int i; } x4;28 29// Bit-field matches30struct S5 { int i : 8; unsigned j : 8; } x5;31 32// Bit-field mismatch33struct S6 { int i : 8; unsigned j : 8; } x6;34 35// Bit-field mismatch36struct S7 { int i : 8; unsigned j : 8; } x7;37 38// Incomplete type39struct S8 *x8;40 41// Incomplete type42struct S9 { int i; float f; } *x9;43 44// Incomplete type45struct S10 *x10;46 47// Matches48struct ListNode {49 int value;50 struct ListNode *Next;51} xList;52 53// Mismatch due to struct used internally54struct DeepError {55 int value;56 struct DeeperError { int i; int f; } *Deeper;57} xDeep;58 59// Matches60struct {61 Int i;62 float f;63} x11;64 65// Matches66typedef struct {67 Int i;68 float f;69} S12;70 71S12 x12;72 73// Mismatch74typedef struct {75 Float i; // Mismatch here.76 float f;77} S13;78 79S13 x13;80 81// Matches82struct Unnamed {83 union {84 struct {85 int i;86 } S;87 struct {88 float i;89 } R;90 } U;91} x14;92 93// Matches94struct DeepUnnamed {95 union {96 union {97 struct {98 long i;99 } S;100 struct {101 int i;102 } R;103 } U1;104 union {105 struct {106 long i;107 } S;108 struct {109 float i;110 } T;111 } U2;112 } U;113 struct {114 long i;115 } V;116} x15;117 118// Mismatch due to unnamed struct used internally119struct DeepUnnamedError {120 union {121 union {122 struct {123 long i;124 } S;125 struct {126 int i;127 } R;128 } U1;129 union {130 struct {131 long i; // Mismatch here.132 } S;133 struct {134 float i;135 } T;136 } U2;137 } U;138 struct {139 long i;140 } V;141} x16;142