1 typedef int Int;
2 typedef float Float;
3 
4 // Matches
5 struct S0 {
6   Int field1;
7   Float field2;
8 };
9 
10 struct S0 x0;
11 
12 // Mismatch in field type
13 struct S1 {
14   Int field1;
15   int field2;
16 };
17 
18 struct S1 x1;
19 
20 // Mismatch in tag kind.
21 struct S2 { int i; float f; } x2;
22 
23 // Missing fields
24 struct S3 { int i; float f; double d; } x3;
25 
26 // Extra fields
27 struct S4 { int i; } x4;
28 
29 // Bit-field matches
30 struct S5 { int i : 8; unsigned j : 8; } x5;
31 
32 // Bit-field mismatch
33 struct S6 { int i : 8; unsigned j : 8; } x6;
34 
35 // Bit-field mismatch
36 struct S7 { int i : 8; unsigned j : 8; } x7;
37 
38 // Incomplete type
39 struct S8 *x8;
40 
41 // Incomplete type
42 struct S9 { int i; float f; } *x9;
43 
44 // Incomplete type
45 struct S10 *x10;
46 
47 // Matches
48 struct ListNode {
49   int value;
50   struct ListNode *Next;
51 } xList;
52 
53 // Mismatch due to struct used internally
54 struct DeepError {
55   int value;
56   struct DeeperError { int i; int f; } *Deeper;
57 } xDeep;
58 
59 // Matches
60 struct {
61   Int i;
62   float f;
63 } x11;
64