zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 6bade0b825c37699346a414568e79fe4c1918409 (tree)
parent 8a0e1d4c02480809fe7ab9ee40ce279ffcb4fd16
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Thu,  1 Mar 2018 16:17:38 -0500

coroutines: add await early test case

Diffstat:
Mtest/cases/coroutines.zig | 32++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+), 0 deletions(-)

diff --git a/test/cases/coroutines.zig b/test/cases/coroutines.zig @@ -98,3 +98,35 @@ fn await_seq(c: u8) void { await_points[await_seq_index] = c; await_seq_index += 1; } + + +var early_final_result: i32 = 0; + +test "coroutine await early return" { + early_seq('a'); + const p = async(std.debug.global_allocator) early_amain() catch unreachable; + early_seq('f'); + assert(early_final_result == 1234); + assert(std.mem.eql(u8, early_points, "abcdef")); +} + +async fn early_amain() void { + early_seq('b'); + const p = async early_another() catch unreachable; + early_seq('d'); + early_final_result = await p; + early_seq('e'); +} + +async fn early_another() i32 { + early_seq('c'); + return 1234; +} + +var early_points = []u8{0} ** "abcdef".len; +var early_seq_index: usize = 0; + +fn early_seq(c: u8) void { + early_points[early_seq_index] = c; + early_seq_index += 1; +}