aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/cases/cancel.zig4
-rw-r--r--test/cases/coroutine_await_struct.zig4
-rw-r--r--test/cases/coroutines.zig19
-rw-r--r--test/compile_errors.zig25
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 {
\\ }
\\ }
\\}