1package test
2
3func init() {
4	testCases = append(testCases,
5		(*struct {
6			EmbeddedFloat64
7		})(nil),
8		(*struct {
9			EmbeddedInt32
10		})(nil),
11		(*struct {
12			F1 float64
13			StringMarshaler
14			F2 int32
15		})(nil),
16		(*struct {
17			EmbeddedMapStringString
18		})(nil),
19		(*struct {
20			*EmbeddedFloat64
21		})(nil),
22		(*struct {
23			*EmbeddedInt32
24		})(nil),
25		(*struct {
26			*EmbeddedMapStringString
27		})(nil),
28		(*struct {
29			*EmbeddedSliceString
30		})(nil),
31		(*struct {
32			*EmbeddedString
33		})(nil),
34		(*struct {
35			*EmbeddedStruct
36		})(nil),
37		(*struct {
38			EmbeddedSliceString
39		})(nil),
40		(*struct {
41			EmbeddedString
42		})(nil),
43		(*struct {
44			EmbeddedString `json:"othername"`
45		})(nil),
46		(*struct {
47			EmbeddedStruct
48		})(nil),
49		(*struct {
50			F1 float64
51			StringTextMarshaler
52			F2 int32
53		})(nil),
54		(*OverlapDifferentLevels)(nil),
55		(*IgnoreDeeperLevel)(nil),
56		(*SameLevel1BothTagged)(nil),
57		(*SameLevel1NoTags)(nil),
58		(*SameLevel1Tagged)(nil),
59		(*SameLevel2BothTagged)(nil),
60		(*SameLevel2NoTags)(nil),
61		(*SameLevel2Tagged)(nil),
62		(*EmbeddedPtr)(nil),
63		(*UnnamedLiteral)(nil),
64	)
65}
66
67type EmbeddedFloat64 float64
68type EmbeddedInt32 int32
69type EmbeddedMapStringString map[string]string
70type EmbeddedSliceString []string
71type EmbeddedString string
72type EmbeddedStruct struct {
73	String string
74	Int    int32
75	Float  float64
76	Struct struct {
77		X string
78	}
79	Slice []string
80	Map   map[string]string
81}
82
83type OverlapDifferentLevelsE1 struct {
84	F1 int32
85}
86
87type OverlapDifferentLevelsE2 struct {
88	F2 string
89}
90
91type OverlapDifferentLevels struct {
92	OverlapDifferentLevelsE1
93	OverlapDifferentLevelsE2
94	F1 string
95}
96
97type IgnoreDeeperLevelDoubleEmbedded struct {
98	F1 int32 `json:"F1"`
99}
100
101type IgnoreDeeperLevelE1 struct {
102	IgnoreDeeperLevelDoubleEmbedded
103	F1 int32
104}
105
106type IgnoreDeeperLevelE2 struct {
107	F1 int32 `json:"F1"`
108	IgnoreDeeperLevelDoubleEmbedded
109}
110
111type IgnoreDeeperLevel struct {
112	IgnoreDeeperLevelE1
113	IgnoreDeeperLevelE2
114}
115
116type SameLevel1BothTaggedE1 struct {
117	F1 int32 `json:"F1"`
118}
119
120type SameLevel1BothTaggedE2 struct {
121	F1 int32 `json:"F1"`
122}
123
124type SameLevel1BothTagged struct {
125	SameLevel1BothTaggedE1
126	SameLevel1BothTaggedE2
127}
128
129type SameLevel1NoTagsE1 struct {
130	F1 int32
131}
132
133type SameLevel1NoTagsE2 struct {
134	F1 int32
135}
136
137type SameLevel1NoTags struct {
138	SameLevel1NoTagsE1
139	SameLevel1NoTagsE2
140}
141
142type SameLevel1TaggedE1 struct {
143	F1 int32
144}
145
146type SameLevel1TaggedE2 struct {
147	F1 int32 `json:"F1"`
148}
149
150type SameLevel1Tagged struct {
151	SameLevel1TaggedE1
152	SameLevel1TaggedE2
153}
154
155type SameLevel2BothTaggedDE1 struct {
156	F1 int32 `json:"F1"`
157}
158
159type SameLevel2BothTaggedE1 struct {
160	SameLevel2BothTaggedDE1
161}
162
163// DoubleEmbedded2 TEST ONLY
164type SameLevel2BothTaggedDE2 struct {
165	F1 int32 `json:"F1"`
166}
167
168// Embedded2 TEST ONLY
169type SameLevel2BothTaggedE2 struct {
170	SameLevel2BothTaggedDE2
171}
172
173type SameLevel2BothTagged struct {
174	SameLevel2BothTaggedE1
175	SameLevel2BothTaggedE2
176}
177
178type SameLevel2NoTagsDE1 struct {
179	F1 int32
180}
181
182type SameLevel2NoTagsE1 struct {
183	SameLevel2NoTagsDE1
184}
185
186type SameLevel2NoTagsDE2 struct {
187	F1 int32
188}
189
190type SameLevel2NoTagsE2 struct {
191	SameLevel2NoTagsDE2
192}
193
194type SameLevel2NoTags struct {
195	SameLevel2NoTagsE1
196	SameLevel2NoTagsE2
197}
198
199// DoubleEmbedded1 TEST ONLY
200type SameLevel2TaggedDE1 struct {
201	F1 int32
202}
203
204// Embedded1 TEST ONLY
205type SameLevel2TaggedE1 struct {
206	SameLevel2TaggedDE1
207}
208
209// DoubleEmbedded2 TEST ONLY
210type SameLevel2TaggedDE2 struct {
211	F1 int32 `json:"F1"`
212}
213
214// Embedded2 TEST ONLY
215type SameLevel2TaggedE2 struct {
216	SameLevel2TaggedDE2
217}
218
219type SameLevel2Tagged struct {
220	SameLevel2TaggedE1
221	SameLevel2TaggedE2
222}
223
224type EmbeddedPtrO1 struct {
225	O1F string
226}
227
228type EmbeddedPtrOption struct {
229	O1 *EmbeddedPtrO1
230}
231
232type EmbeddedPtr struct {
233	EmbeddedPtrOption `json:","`
234}
235
236type UnnamedLiteral struct {
237	_ struct{}
238}
239