Commit 5bd330e76c

Andrew Kelley <andrew@ziglang.org>
2019-08-02 22:32:24
add heap allocated async function frame test
1 parent b3b6a98
Changed files (1)
test
stage1
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();
+}