zig/test/cases/goto.zig
Andrew Kelley af536ac343 introduce new test syntax
* remove setFnTest builtin
 * add test "name" { ... } syntax
 * remove --check-unused argument. functions are always lazy now.
2017-03-16 16:02:35 -04:00

38 lines
573 B
Zig

const assert = @import("std").debug.assert;
test "gotoAndLabels" {
gotoLoop();
assert(goto_counter == 10);
}
fn gotoLoop() {
var i: i32 = 0;
goto cond;
loop:
i += 1;
cond:
if (!(i < 10)) goto end;
goto_counter += 1;
goto loop;
end:
}
var goto_counter: i32 = 0;
test "gotoLeaveDeferScope" {
testGotoLeaveDeferScope(true);
}
fn testGotoLeaveDeferScope(b: bool) {
var it_worked = false;
goto entry;
exit:
if (it_worked) {
return;
}
@unreachable();
entry:
defer it_worked = true;
if (b) goto exit;
}