blob: a85aec70a84ce718e487424cc0b4156266c34565 [file] [log] [blame]
Douglas Gregor69837be2010-02-11 18:18:11 +00001typedef int Int;
2typedef float Float;
3
Douglas Gregor7eeb5972010-02-11 19:21:55 +00004// Matches
Douglas Gregor69837be2010-02-11 18:18:11 +00005struct S0 {
6 Int field1;
7 Float field2;
8};
9
10struct S0 x0;
11
Douglas Gregor7eeb5972010-02-11 19:21:55 +000012// Mismatch in field type
Douglas Gregor69837be2010-02-11 18:18:11 +000013struct S1 {
14 Int field1;
15 int field2;
16};
17
18struct S1 x1;
Douglas Gregor7eeb5972010-02-11 19:21:55 +000019
20// Mismatch in tag kind.
21struct S2 { int i; float f; } x2;
22
23// Missing fields
24struct S3 { int i; float f; double d; } x3;
25
26// Extra fields
27struct S4 { int i; } x4;
28
29// Bit-field matches
30struct S5 { int i : 8; unsigned j : 8; } x5;
31
32// Bit-field mismatch
33struct S6 { int i : 8; unsigned j : 8; } x6;
34
35// Bit-field mismatch
36struct S7 { int i : 8; unsigned j : 8; } x7;
Douglas Gregor25791052010-02-12 00:09:27 +000037
38// Incomplete type
39struct S8 *x8;
40
41// Incomplete type
42struct S9 { int i; float f; } *x9;
43
44// Incomplete type
45struct S10 *x10;
46
Douglas Gregor3996e242010-02-15 22:01:00 +000047// Matches
Douglas Gregor8cdbe642010-02-12 23:44:20 +000048struct ListNode {
49 int value;
50 struct ListNode *Next;
51} xList;
Douglas Gregor3996e242010-02-15 22:01:00 +000052
53// Mismatch due to struct used internally
54struct DeepError {
55 int value;
56 struct DeeperError { int i; int f; } *Deeper;
57} xDeep;
Douglas Gregorb4964f72010-02-15 23:54:17 +000058
59// Matches
60struct {
61 Int i;
62 float f;
63} x11;
Gabor Horvath5558ba22017-04-03 09:30:20 +000064
65// Matches
66typedef struct {
67 Int i;
68 float f;
69} S12;
70
71S12 x12;
72
73// Mismatch
74typedef struct {
75 Float i; // Mismatch here.
76 float f;
77} S13;
78
79S13 x13;
Aleksei Sidorin499de6c2018-04-05 15:31:49 +000080
81// Matches
82struct Unnamed {
83 union {
84 struct {
85 int i;
86 } S;
87 struct {
88 float i;
89 } R;
90 } U;
91} x14;
92
93// Matches
94struct 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 internally
119struct 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;