zig

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

commit 5bd330e76c4b9bfc341dcba1732a8ac9277e133d (tree)
parent b3b6a98451a9703dc15a1ee5f48acde23de3c491
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Fri,  2 Aug 2019 16:32:24 -0400

add heap allocated async function frame test

Diffstat:
Mtest/stage1/behavior/coroutines.zig | 24++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)

diff --git a/test/stage1/behavior/coroutines.zig b/test/stage1/behavior/coroutines.zig @@ -333,3 +333,27 @@ async fn testBreakFromSuspend(my_result: *i32) void { suspend; my_result.* += 1; } + +test "heap allocated async function frame" { + const S = struct { + var x: i32 = 42; + + fn doTheTest() !void { + const frame = try std.heap.direct_allocator.create(@Frame(someFunc)); + defer std.heap.direct_allocator.destroy(frame); + + expect(x == 42); + frame.* = async someFunc(); + expect(x == 43); + resume frame; + expect(x == 44); + } + + fn someFunc() void { + x += 1; + suspend; + x += 1; + } + }; + try S.doTheTest(); +}