1// Copyright 2020 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package testdata
6
7type T struct {
8	x, y int
9}
10
11type T2 struct {
12	w, z int
13}
14
15var _ = [42]T{
16	T{},     // want "redundant type from array, slice, or map composite literal"
17	T{1, 2}, // want "redundant type from array, slice, or map composite literal"
18	T{3, 4}, // want "redundant type from array, slice, or map composite literal"
19}
20
21var _ = [...]T{
22	T{},     // want "redundant type from array, slice, or map composite literal"
23	T{1, 2}, // want "redundant type from array, slice, or map composite literal"
24	T{3, 4}, // want "redundant type from array, slice, or map composite literal"
25}
26
27var _ = []T{
28	T{},     // want "redundant type from array, slice, or map composite literal"
29	T{1, 2}, // want "redundant type from array, slice, or map composite literal"
30	T{3, 4}, // want "redundant type from array, slice, or map composite literal"
31}
32
33var _ = []T{
34	T{}, // want "redundant type from array, slice, or map composite literal"
35	10:  T{1, 2}, // want "redundant type from array, slice, or map composite literal"
36	20:  T{3, 4}, // want "redundant type from array, slice, or map composite literal"
37}
38
39var _ = []struct {
40	x, y int
41}{
42	struct{ x, y int }{}, // want "redundant type from array, slice, or map composite literal"
43	10:                   struct{ x, y int }{1, 2}, // want "redundant type from array, slice, or map composite literal"
44	20:                   struct{ x, y int }{3, 4}, // want "redundant type from array, slice, or map composite literal"
45}
46
47var _ = []interface{}{
48	T{},
49	10: T{1, 2},
50	20: T{3, 4},
51}
52
53var _ = [][]int{
54	[]int{},     // want "redundant type from array, slice, or map composite literal"
55	[]int{1, 2}, // want "redundant type from array, slice, or map composite literal"
56	[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
57}
58
59var _ = [][]int{
60	([]int{}),
61	([]int{1, 2}),
62	[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
63}
64
65var _ = [][][]int{
66	[][]int{}, // want "redundant type from array, slice, or map composite literal"
67	[][]int{ // want "redundant type from array, slice, or map composite literal"
68		[]int{},           // want "redundant type from array, slice, or map composite literal"
69		[]int{0, 1, 2, 3}, // want "redundant type from array, slice, or map composite literal"
70		[]int{4, 5},       // want "redundant type from array, slice, or map composite literal"
71	},
72}
73
74var _ = map[string]T{
75	"foo": T{},     // want "redundant type from array, slice, or map composite literal"
76	"bar": T{1, 2}, // want "redundant type from array, slice, or map composite literal"
77	"bal": T{3, 4}, // want "redundant type from array, slice, or map composite literal"
78}
79
80var _ = map[string]struct {
81	x, y int
82}{
83	"foo": struct{ x, y int }{},     // want "redundant type from array, slice, or map composite literal"
84	"bar": struct{ x, y int }{1, 2}, // want "redundant type from array, slice, or map composite literal"
85	"bal": struct{ x, y int }{3, 4}, // want "redundant type from array, slice, or map composite literal"
86}
87
88var _ = map[string]interface{}{
89	"foo": T{},
90	"bar": T{1, 2},
91	"bal": T{3, 4},
92}
93
94var _ = map[string][]int{
95	"foo": []int{},     // want "redundant type from array, slice, or map composite literal"
96	"bar": []int{1, 2}, // want "redundant type from array, slice, or map composite literal"
97	"bal": []int{3, 4}, // want "redundant type from array, slice, or map composite literal"
98}
99
100var _ = map[string][]int{
101	"foo": ([]int{}),
102	"bar": ([]int{1, 2}),
103	"bal": []int{3, 4}, // want "redundant type from array, slice, or map composite literal"
104}
105
106type Point struct {
107	a int
108	b int
109}
110
111type Piece struct {
112	a int
113	b int
114	c Point
115	d []Point
116	e *Point
117	f *Point
118}
119
120// from exp/4s/data.go
121var pieces3 = []Piece{
122	Piece{0, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
123	Piece{1, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
124	Piece{2, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
125	Piece{3, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
126}
127
128var _ = [42]*T{
129	&T{},     // want "redundant type from array, slice, or map composite literal"
130	&T{1, 2}, // want "redundant type from array, slice, or map composite literal"
131	&T{3, 4}, // want "redundant type from array, slice, or map composite literal"
132}
133
134var _ = [...]*T{
135	&T{},     // want "redundant type from array, slice, or map composite literal"
136	&T{1, 2}, // want "redundant type from array, slice, or map composite literal"
137	&T{3, 4}, // want "redundant type from array, slice, or map composite literal"
138}
139
140var _ = []*T{
141	&T{},     // want "redundant type from array, slice, or map composite literal"
142	&T{1, 2}, // want "redundant type from array, slice, or map composite literal"
143	&T{3, 4}, // want "redundant type from array, slice, or map composite literal"
144}
145
146var _ = []*T{
147	&T{}, // want "redundant type from array, slice, or map composite literal"
148	10:   &T{1, 2}, // want "redundant type from array, slice, or map composite literal"
149	20:   &T{3, 4}, // want "redundant type from array, slice, or map composite literal"
150}
151
152var _ = []*struct {
153	x, y int
154}{
155	&struct{ x, y int }{}, // want "redundant type from array, slice, or map composite literal"
156	10:                    &struct{ x, y int }{1, 2}, // want "redundant type from array, slice, or map composite literal"
157	20:                    &struct{ x, y int }{3, 4}, // want "redundant type from array, slice, or map composite literal"
158}
159
160var _ = []interface{}{
161	&T{},
162	10: &T{1, 2},
163	20: &T{3, 4},
164}
165
166var _ = []*[]int{
167	&[]int{},     // want "redundant type from array, slice, or map composite literal"
168	&[]int{1, 2}, // want "redundant type from array, slice, or map composite literal"
169	&[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
170}
171
172var _ = []*[]int{
173	(&[]int{}),
174	(&[]int{1, 2}),
175	&[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
176}
177
178var _ = []*[]*[]int{
179	&[]*[]int{}, // want "redundant type from array, slice, or map composite literal"
180	&[]*[]int{ // want "redundant type from array, slice, or map composite literal"
181		&[]int{},           // want "redundant type from array, slice, or map composite literal"
182		&[]int{0, 1, 2, 3}, // want "redundant type from array, slice, or map composite literal"
183		&[]int{4, 5},       // want "redundant type from array, slice, or map composite literal"
184	},
185}
186
187var _ = map[string]*T{
188	"foo": &T{},     // want "redundant type from array, slice, or map composite literal"
189	"bar": &T{1, 2}, // want "redundant type from array, slice, or map composite literal"
190	"bal": &T{3, 4}, // want "redundant type from array, slice, or map composite literal"
191}
192
193var _ = map[string]*struct {
194	x, y int
195}{
196	"foo": &struct{ x, y int }{},     // want "redundant type from array, slice, or map composite literal"
197	"bar": &struct{ x, y int }{1, 2}, // want "redundant type from array, slice, or map composite literal"
198	"bal": &struct{ x, y int }{3, 4}, // want "redundant type from array, slice, or map composite literal"
199}
200
201var _ = map[string]interface{}{
202	"foo": &T{},
203	"bar": &T{1, 2},
204	"bal": &T{3, 4},
205}
206
207var _ = map[string]*[]int{
208	"foo": &[]int{},     // want "redundant type from array, slice, or map composite literal"
209	"bar": &[]int{1, 2}, // want "redundant type from array, slice, or map composite literal"
210	"bal": &[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
211}
212
213var _ = map[string]*[]int{
214	"foo": (&[]int{}),
215	"bar": (&[]int{1, 2}),
216	"bal": &[]int{3, 4}, // want "redundant type from array, slice, or map composite literal"
217}
218
219var pieces4 = []*Piece{
220	&Piece{0, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
221	&Piece{1, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
222	&Piece{2, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
223	&Piece{3, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
224}
225
226var _ = map[T]T2{
227	T{1, 2}: T2{3, 4}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
228	T{5, 6}: T2{7, 8}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
229}
230
231var _ = map[*T]*T2{
232	&T{1, 2}: &T2{3, 4}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
233	&T{5, 6}: &T2{7, 8}, // want "redundant type from array, slice, or map composite literal" "redundant type from array, slice, or map composite literal"
234}
235