| 1 | fn 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 | |
| 15 | fn 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 | |
| 31 | fn 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 | |
| 51 | fn 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 | |
| 67 | fn 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 | |