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