v2 / vlib / v / tests / options / option_struct_init_on_if_test.v
36 lines · 34 sloc · 516 bytes · daeb548e7b284cf4423362b4a640355845d5e532
Raw
1struct Number {
2 natural ?string
3 integer string
4}
5
6fn number(n int) Number {
7 return if n >= 0 { // a single return here
8 Number{
9 natural: '${n}'
10 integer: '${n}'
11 }
12 } else {
13 Number{
14 integer: '${n}'
15 }
16 }
17}
18
19fn test_main() {
20 mut ret := []Number{}
21 for n in [1, 0, -1] {
22 ret << number(n)
23 }
24 assert ret[0] == Number{
25 natural: ?string('1')
26 integer: '1'
27 }
28 assert ret[1] == Number{
29 natural: ?string('0')
30 integer: '0'
31 }
32 assert ret[2] == Number{
33 natural: ?string(none)
34 integer: '-1'
35 }
36}
37