v2 / vlib / v / gen / wasm / tests / labeled_for_inc.vv
78 lines · 74 sloc · 1.36 KB · 86619338dd2955e1d58a8a365409221e386a00fe
Raw
1fn labeled_break_continue_with_inc() int {
2 // Should not infinite loop
3 outer: for i := 4; true; i++ {
4 for {
5 if i < 7 {
6 continue outer
7 } else {
8 break outer
9 }
10 }
11 }
12 return 0
13}
14
15fn labeled_break_with_inc() int {
16 mut sum := 0
17 outer: for i := 0; i < 10; i++ {
18 for j := 0; j < 5; j++ {
19 sum += j
20 if i == 3 && j == 2 {
21 break outer
22 }
23 }
24 if sum == 10 {
25 return i
26 }
27 }
28 return sum
29}
30
31fn triple_nested_labeled_continue() (int, int) {
32 mut val1 := 0
33 mut val2 := 0
34 outer: for i := 0; i < 5; i++ {
35 middle: for j := 0; j < 3; j++ {
36 for k := 0; k < 2; k++ {
37 if i == 1 && j == 1 {
38 continue outer
39 }
40 val2 += 1
41 if i == 2 && j == 2 {
42 continue middle
43 }
44 val1 += 1
45 }
46 }
47 }
48 return val1, val2
49}
50
51fn labeled_continue_deep_nest() int {
52 mut result := 0
53 outer: for i := 0; i < 3; i++ {
54 for j := 0; j < 2; j++ {
55 for k := 0; k < 2; k++ {
56 if k == 1 && i < 2 {
57 result++
58 continue outer
59 }
60 result++
61 }
62 }
63 }
64 return result
65}
66
67fn main() {
68 println('--- labeled_break_continue_with_inc()')
69 println(labeled_break_continue_with_inc())
70 println('--- labeled_break_with_inc()')
71 println(labeled_break_with_inc())
72 println('--- triple_nested_labeled_continue()')
73 a, b := triple_nested_labeled_continue()
74 println(a)
75 println(b)
76 println('--- labeled_continue_deep_nest()')
77 println(labeled_continue_deep_nest())
78}
79