#zig build-obj {
--name test -fno-emit-bin
-Mroot=test.zig
#}

#write test.zig {
fn returns() usize {
    return 2;
}
export fn f1() void {
    while (true) returns();
}
export fn f2() void {
    var x: ?i32 = null;
    _ = &x;
    while (x) |_| returns();
}
export fn f3() void {
    var x: anyerror!i32 = error.Bad;
    _ = &x;
    while (x) |_| returns() else |_| unreachable;
}
export fn f4() void {
    var a = true;
    _ = &a;
    while (a) {} else true;
}
export fn f5() void {
    var a = true;
    _ = &a;
    const foo = while (a) returns() else true;
    _ = foo;
}
#}
#update
#check errors {
test.zig:5:25: error: value of type 'usize' ignored
test.zig:5:25: note: all non-void values must be used
test.zig:5:25: note: to discard the value, assign it to '_'
test.zig:10:26: error: value of type 'usize' ignored
test.zig:10:26: note: all non-void values must be used
test.zig:10:26: note: to discard the value, assign it to '_'
test.zig:15:26: error: value of type 'usize' ignored
test.zig:15:26: note: all non-void values must be used
test.zig:15:26: note: to discard the value, assign it to '_'
test.zig:20:23: error: value of type 'bool' ignored
test.zig:20:23: note: all non-void values must be used
test.zig:20:23: note: to discard the value, assign it to '_'
test.zig:25:34: error: value of type 'usize' ignored
test.zig:25:34: note: all non-void values must be used
test.zig:25:34: note: to discard the value, assign it to '_'
#}
