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;