1 // Matches
2 struct S0 {
3   int field1;
4   float field2;
5 };
6 
7 struct S0 x0;
8 
9 // Mismatch in field type
10 struct S1 {
11   int field1;
12   float field2;
13 };
14 
15 struct S1 x1;
16 
17 // Mismatch in tag kind.
18 union S2 { int i; float f; } x2;
19 
20 // Missing fields
21 struct S3 { int i; float f; } x3;
22 
23 // Extra fields
24 struct S4 { int i; float f; } x4;
25 
26 // Bit-field matches
27 struct S5 { int i : 8; unsigned j : 8; } x5;
28 
29 // Bit-field mismatch
30 struct S6 { int i : 8; unsigned j; } x6;
31 
32 // Bit-field mismatch
33 struct S7 { int i : 8; unsigned j : 16; } x7;
34 
35 // Incomplete type
36 struct S8 { int i; float f; } *x8;
37 
38 // Incomplete type
39 struct S9 *x9;
40 
41 // Incomplete type
42 struct S10 *x10;
43 
44 // Matches
45 struct ListNode {
46   int value;
47   struct ListNode *Next;
48 } xList;
49 
50 // Mismatch due to struct used internally
51 struct DeepError {
52   int value;
53   struct DeeperError { int i; float f; } *Deeper;
54 } xDeep;
55 
56 // Matches
57 struct {
58   int i;
59   float f;
60 } x11;
61 
62 // Matches
63 typedef struct {
64   int i;
65   float f;
66 } S12;
67 
68 S12 x12;
69 
70 // Mismatch
71 typedef struct {
72   int i; // Mismatch here.
73   float f;
74 } S13;
75 
76 S13 x13;
77 
78 // Matches
79 struct Unnamed {
80   union {
81     struct {
82       int i;
83     } S;
84     struct {
85       float i;
86     } R;
87   } U;
88 } x14;
89 
90 // Matches
91 struct DeepUnnamed {
92   union {
93     union {
94       struct {
95         long i;
96       } S;
97       struct {
98         int i;
99       } R;
100     } U1;
101     union {
102       struct {
103         long i;
104       } S;
105       struct {
106         float i;
107       } T;
108     } U2;
109   } U;
110   struct {
111     long i;
112   } V;
113 } x15;
114 
115 // Mismatch due to unnamed struct used internally
116 struct DeepUnnamedError {
117   union {
118     union {
119       struct {
120         long i;
121       } S;
122       struct {
123         int i;
124       } R;
125     } U1;
126     union {
127       struct {
128         float i; // Mismatch here.
129       } S;
130       struct {
131         float i;
132       } T;
133     } U2;
134   } U;
135   struct {
136     long i;
137   } V;
138 } x16;
139