1fn test_assign() {
2	_ = 123
3}
4
5fn fn_with_blank_param(_ int) {
6	_ = 456
7}
8
9fn test_fn_with_blank_param() {
10	fn_with_blank_param(321)
11}
12
13fn test_for_in_range() {
14	for _ in 1 .. 10 {
15		assert true
16	}
17}
18
19fn test_nested_range() {
20	for _ in 1 .. 10 {
21		for _ in 1 .. 10 {
22			assert true
23		}
24	}
25}
26
27fn test_for_in_array_simple() {
28	for _ in [1, 2, 3] {
29		assert true
30	}
31}
32
33fn test_for_in_array_key() {
34	mut i := 1
35	for _, v in [1, 2, 3] {
36		assert v == i
37		i++
38	}
39}
40
41fn test_for_in_array_val() {
42	mut j := 0
43	for i, _ in [3, 4, 5] {
44		assert i == j
45		j++
46	}
47}
48
49fn test_for_in_array_both() {
50	for _, _ in [1, 2, 3] {
51		assert true
52	}
53}
54
55fn test_nested_for_in_array_simple() {
56	for _ in [1, 2, 3] {
57		for _ in [1, 2, 3] {
58			assert true
59		}
60	}
61}
62
63fn test_nested_for_in_array_key() {
64	for _, v in [1, 2, 3] {
65		for _, w in [1, 2, 3] {
66			assert true
67		}
68	}
69}
70
71fn test_nested_for_in_array_val() {
72	for i, _ in [1, 2, 3] {
73		for j, _ in [1, 2, 3] {
74			assert true
75		}
76	}
77}
78
79fn test_nested_for_in_array_both() {
80	for _, _ in [1, 2, 3] {
81		for _, _ in [1, 2, 3] {
82			assert true
83		}
84	}
85}
86
87const (
88	m = {
89		'key': 'value'
90	}
91)
92
93fn test_for_in_map_key() {
94	for _, v in m {
95		assert v == 'value'
96	}
97}
98
99fn test_for_in_map_val() {
100	for i, _ in m {
101		assert i == 'key'
102	}
103}
104
105fn test_for_in_map_both() {
106	for _, _ in m {
107		assert true
108	}
109}
110
111fn test_nested_for_in_map_key() {
112	for _, v in m {
113		assert v == 'value'
114		for _, w in m {
115			assert w == 'value'
116		}
117	}
118}
119
120fn test_nested_for_in_map_val() {
121	for i, _ in m {
122		assert i == 'key'
123		for j, _ in m {
124			assert j == 'key'
125		}
126	}
127}
128
129fn test_nested_for_in_map_both() {
130	for _, _ in m {
131		for _, _ in m {
132			assert true
133		}
134	}
135}
136
137fn fn_for_in_variadic_args_simple(arr ...string) {
138	for _ in arr {
139		assert true
140	}
141}
142
143fn fn_for_in_variadic_args_key(arr ...string) {
144	for _, v in arr {
145		assert true
146	}
147}
148
149fn fn_for_in_variadic_args_val(arr ...string) {
150	for i, _ in arr {
151		assert true
152	}
153}
154
155fn fn_for_in_variadic_args_both(arr ...string) {
156	for _, _ in arr {
157		assert true
158	}
159}
160
161fn fn_nested_for_in_variadic_args(arr ...string) {
162	for _ in arr {
163		for _ in arr {
164			assert true
165		}
166	}
167}
168
169fn fn_nested_for_in_variadic_args_key(arr ...string) {
170	for _, v in arr {
171		for _, w in arr {
172			assert true
173		}
174	}
175}
176
177fn fn_nested_for_in_variadic_args_val(arr ...string) {
178	for i, _ in arr {
179		for j, _ in arr {
180			assert true
181		}
182	}
183}
184
185fn fn_nested_for_in_variadic_args_both(arr ...string) {
186	for _, _ in arr {
187		for _, _ in arr {
188			assert true
189		}
190	}
191}
192
193fn test_for_in_variadic_args() {
194	fn_for_in_variadic_args_simple('a', 'b', 'c')
195	fn_for_in_variadic_args_key('a', 'b', 'c')
196	fn_for_in_variadic_args_val('a', 'b', 'c')
197	fn_for_in_variadic_args_both('a', 'b', 'c')
198	fn_nested_for_in_variadic_args('a', 'b', 'c')
199	fn_nested_for_in_variadic_args_key('a', 'b', 'c')
200	fn_nested_for_in_variadic_args_val('a', 'b', 'c')
201	fn_nested_for_in_variadic_args_both('a', 'b', 'c')
202}
203
204fn test_for_in_string_simple() {
205	for _ in 'abcd' {
206		assert true
207	}
208}
209
210fn test_for_in_string_key() {
211	for _, v in 'a' {
212		assert v == `a`
213	}
214}
215
216fn test_for_in_string_val() {
217	for i, _ in 'a' {
218		assert i == 0
219	}
220}
221
222fn test_for_in_string_both() {
223	for _, _ in 'abcd' {
224		assert true
225	}
226}
227
228fn test_nested_for_in_string_simple() {
229	for _ in 'abcd' {
230		for _ in 'abcd' {
231			assert true
232		}
233	}
234}
235
236fn test_nested_for_in_string_key() {
237	for _, v in 'a' {
238		assert v == `a`
239		for _, w in 'a' {
240			assert w == `a`
241		}
242	}
243}
244
245fn test_nested_for_in_string_val() {
246	for i, _ in 'a' {
247		assert i == 0
248		for j, _ in 'a' {
249			assert j == 0
250		}
251	}
252}
253
254fn test_nested_for_in_string_both() {
255	for _, _ in 'abcd' {
256		for _, _ in 'abcd' {
257			assert true
258		}
259	}
260}
261
262fn multi_return() (int, int, string) {
263	return 1, 2, '3'
264}
265
266fn test_blank_multi_return() {
267	_, a, b := multi_return()
268	c, _, d := multi_return()
269	e, f, _ := multi_return()
270	_, _, g := multi_return()
271	_, h, _ := multi_return()
272	i, _, _ := multi_return()
273	_, _, _ := multi_return()
274}
275