v2 / vlib / v / gen / wasm / tests / for_in_range.vv
133 lines · 113 sloc · 1.82 KB · 5576ffd68f665ccd278d7ad5d61786f55af1a093
Raw
1fn simple_range() int {
2 mut sum := 0
3 for i in 0 .. 5 {
4 sum += i
5 }
6 return sum
7}
8
9fn negative_range() int {
10 mut sum := 0
11 for i in -99 .. -2 {
12 sum += i
13 }
14 return sum
15}
16
17fn inverted_range() int {
18 mut sum := 0
19 // Should be skipped
20 for i in 5 .. 0 {
21 sum += i
22 }
23 return sum
24}
25
26fn range_with_string() int {
27 strc := 'This is a test!'
28 mut sum := 0
29 for i in 0 .. strc.len {
30 sum += i
31 }
32 return sum
33}
34
35fn range_with_expr() int {
36 start := 2
37 end := 7
38 mut sum := 0
39 for i in start .. end {
40 sum += i
41 }
42 return sum
43}
44
45fn range_dual() int {
46 a := 128
47 mut sum := 0
48 for i in 0 .. a {
49 sum += i
50 for j in -20 .. a {
51 sum += j
52 }
53 }
54 return sum
55}
56
57fn for_in_item() {
58 a := ['a', 'b', 'c']!
59 b := 'This a string'
60 c := [1, 2, 3, 5]!
61 d := 42
62 hard := [[[[1, 2, 3, 4]!]!]!]!
63 hard_2 := [[[[1, d, d, 4]!]!]!]!
64
65 println('a ----')
66 for element in a {
67 println(element)
68 }
69
70 println('b ----')
71 for character in b {
72 println(character)
73 }
74
75 println('hard ----')
76 for i in hard {
77 for j in i {
78 for k in j {
79 for element in k {
80 println(element)
81 }
82 }
83 }
84 }
85
86 println('hard_2 ----')
87 for i in hard_2 {
88 for j in i {
89 for k in j {
90 for element in k {
91 println(element)
92 }
93 }
94 }
95 }
96
97 println('c ----')
98 for element in c {
99 println(element)
100 }
101
102 println('counter ----')
103 mut i := 0
104 for _ in c {
105 i++
106 }
107 println(i)
108}
109
110fn main() {
111 println('--- inverted_range()')
112 println(inverted_range())
113
114 println('--- negative_range()')
115 println(negative_range())
116
117 println('--- simple_range()')
118 println(simple_range())
119
120 println('--- range_with_string()')
121 println(range_with_string())
122
123 println('--- range_with_expr()')
124 println(range_with_expr())
125
126 println('--- range_dual()')
127 println(range_dual())
128
129 println('--- for_in_item()')
130 for_in_item()
131
132 // Currently, the backend doesn't support maps, list etc. iteration is not possible
133}
134