diff --git a/test/stage2/wasm.zig b/test/stage2/wasm.zig index b0099c392cf002ecd906792f15f223860e3844af..a9f798489300e1a1839ee8b31c30fb80ce19d093 100644 --- a/test/stage2/wasm.zig +++ b/test/stage2/wasm.zig @@ -644,4 +644,58 @@ pub fn addCases(ctx: *TestContext) !void { \\} , "5\n"); } + + { + var case = ctx.exe("wasm optionals", wasi); + + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var x: ?u32 = 5; + \\ var y: u32 = 0; + \\ if (x) |val| { + \\ y = val; + \\ } + \\ return y; + \\} + , "5\n"); + + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var x: ?u32 = null; + \\ var y: u32 = 0; + \\ if (x) |val| { + \\ y = val; + \\ } + \\ return y; + \\} + , "0\n"); + + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var x: ?u32 = 5; + \\ return x.?; + \\} + , "5\n"); + + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var x: u32 = 5; + \\ var y: ?u32 = x; + \\ return y.?; + \\} + , "5\n"); + + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var val: ?u32 = 5; + \\ while (val) |*v| { + \\ v.* -= 1; + \\ if (v.* == 2) { + \\ val = null; + \\ } + \\ } + \\ return 0; + \\} + , "0\n"); + } }