diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-03-01 16:17:38 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-03-01 16:17:38 -0500 |
| commit | 6bade0b825c37699346a414568e79fe4c1918409 (patch) | |
| tree | 467d681bef420f319413d3fdae786dba9e80cf09 /test | |
| parent | 8a0e1d4c02480809fe7ab9ee40ce279ffcb4fd16 (diff) | |
| download | zig-6bade0b825c37699346a414568e79fe4c1918409.tar.gz zig-6bade0b825c37699346a414568e79fe4c1918409.zip | |
coroutines: add await early test case
Diffstat (limited to 'test')
| -rw-r--r-- | test/cases/coroutines.zig | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/cases/coroutines.zig b/test/cases/coroutines.zig index fa32cd8ce9..d5469a5d03 100644 --- 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; +} |
