master
1const expect = @import("std").testing.expect;
2
3test "while null capture" {
4 var sum1: u32 = 0;
5 numbers_left = 3;
6 while (eventuallyNullSequence()) |value| {
7 sum1 += value;
8 }
9 try expect(sum1 == 3);
10
11 // null capture with an else block
12 var sum2: u32 = 0;
13 numbers_left = 3;
14 while (eventuallyNullSequence()) |value| {
15 sum2 += value;
16 } else {
17 try expect(sum2 == 3);
18 }
19
20 // null capture with a continue expression
21 var i: u32 = 0;
22 var sum3: u32 = 0;
23 numbers_left = 3;
24 while (eventuallyNullSequence()) |value| : (i += 1) {
25 sum3 += value;
26 }
27 try expect(i == 3);
28}
29
30var numbers_left: u32 = undefined;
31fn eventuallyNullSequence() ?u32 {
32 return if (numbers_left == 0) null else blk: {
33 numbers_left -= 1;
34 break :blk numbers_left;
35 };
36}
37
38// test