authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-03-01 16:17:38-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-03-01 16:17:38-05:00
log6bade0b825c37699346a414568e79fe4c1918409
tree467d681bef420f319413d3fdae786dba9e80cf09
parent8a0e1d4c02480809fe7ab9ee40ce279ffcb4fd16

coroutines: add await early test case


1 files changed, 32 insertions(+), 0 deletions(-)

test/cases/coroutines.zig+32
...@@ -98,3 +98,35 @@ fn await_seq(c: u8) void {...@@ -98,3 +98,35 @@ fn await_seq(c: u8) void {
98 await_points[await_seq_index] = c;98 await_points[await_seq_index] = c;
99 await_seq_index += 1;99 await_seq_index += 1;
100}100}
101
102
103var early_final_result: i32 = 0;
104
105test "coroutine await early return" {
106 early_seq('a');
107 const p = async(std.debug.global_allocator) early_amain() catch unreachable;
108 early_seq('f');
109 assert(early_final_result == 1234);
110 assert(std.mem.eql(u8, early_points, "abcdef"));
111}
112
113async fn early_amain() void {
114 early_seq('b');
115 const p = async early_another() catch unreachable;
116 early_seq('d');
117 early_final_result = await p;
118 early_seq('e');
119}
120
121async fn early_another() i32 {
122 early_seq('c');
123 return 1234;
124}
125
126var early_points = []u8{0} ** "abcdef".len;
127var early_seq_index: usize = 0;
128
129fn early_seq(c: u8) void {
130 early_points[early_seq_index] = c;
131 early_seq_index += 1;
132}