diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/cases/cancel.zig | 4 | ||||
| -rw-r--r-- | test/cases/coroutine_await_struct.zig | 4 | ||||
| -rw-r--r-- | test/cases/coroutines.zig | 19 | ||||
| -rw-r--r-- | test/compile_errors.zig | 25 |
4 files changed, 39 insertions, 13 deletions
diff --git a/test/cases/cancel.zig b/test/cases/cancel.zig index edf11d687d..c0f74fd34f 100644 --- a/test/cases/cancel.zig +++ b/test/cases/cancel.zig @@ -85,8 +85,8 @@ async fn b4() void { defer { defer_b4 = true; } - suspend |p| { - b4_handle = p; + suspend { + b4_handle = @handle(); } suspend; } diff --git a/test/cases/coroutine_await_struct.zig b/test/cases/coroutine_await_struct.zig index 56c526092d..79168715d8 100644 --- a/test/cases/coroutine_await_struct.zig +++ b/test/cases/coroutine_await_struct.zig @@ -30,9 +30,9 @@ async fn await_amain() void { } async fn await_another() Foo { await_seq('c'); - suspend |p| { + suspend { await_seq('d'); - await_a_promise = p; + await_a_promise = @handle(); } await_seq('g'); return Foo{ .x = 1234 }; diff --git a/test/cases/coroutines.zig b/test/cases/coroutines.zig index 72a4ed0b38..bd6b6abf6f 100644 --- a/test/cases/coroutines.zig +++ b/test/cases/coroutines.zig @@ -62,10 +62,15 @@ test "coroutine suspend with block" { var a_promise: promise = undefined; var result = false; async fn testSuspendBlock() void { - suspend |p| { - comptime assert(@typeOf(p) == promise->void); - a_promise = p; + suspend { + comptime assert(@typeOf(@handle()) == promise->void); + a_promise = @handle(); } + + //Test to make sure that @handle() works as advertised (issue #1296) + //var our_handle: promise = @handle(); + assert( a_promise == @handle() ); + result = true; } @@ -93,9 +98,9 @@ async fn await_amain() void { } async fn await_another() i32 { await_seq('c'); - suspend |p| { + suspend { await_seq('d'); - await_a_promise = p; + await_a_promise = @handle(); } await_seq('g'); return 1234; @@ -244,8 +249,8 @@ test "break from suspend" { std.debug.assert(my_result == 2); } async fn testBreakFromSuspend(my_result: *i32) void { - suspend |p| { - resume p; + suspend { + resume @handle(); } my_result.* += 1; suspend; diff --git a/test/compile_errors.zig b/test/compile_errors.zig index 2c4c9208eb..948d212e58 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -2,6 +2,27 @@ const tests = @import("tests.zig"); pub fn addCases(cases: *tests.CompileErrorContext) void { cases.add( + "@handle() called outside of function definition", + \\var handle_undef: promise = undefined; + \\var handle_dummy: promise = @handle(); + \\export fn entry() bool { + \\ return handle_undef == handle_dummy; + \\} + , + ".tmp_source.zig:2:29: error: @handle() called outside of function definition", + ); + + cases.add( + "@handle() in non-async function", + \\export fn entry() bool { + \\ var handle_undef: promise = undefined; + \\ return handle_undef == @handle(); + \\} + , + ".tmp_source.zig:3:28: error: @handle() in non-async function", + ); + + cases.add( "while loop body expression ignored", \\fn returns() usize { \\ return 2; @@ -367,8 +388,8 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\} \\ \\async fn foo() void { - \\ suspend |p| { - \\ suspend |p1| { + \\ suspend { + \\ suspend { \\ } \\ } \\} |
