diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-02-27 13:32:55 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-02-27 13:32:55 +0200 |
| commit | 7a92b89a9d19f3e6d258c848f1be13a6e31fec97 (patch) | |
| tree | 24c8172ece3a13981189b7bef2d4665c118cd0e6 /test/behavior/basic.zig | |
| parent | 813f368a3c44133106584b0d7e30748cff79a776 (diff) | |
| download | zig-7a92b89a9d19f3e6d258c848f1be13a6e31fec97.tar.gz zig-7a92b89a9d19f3e6d258c848f1be13a6e31fec97.zip | |
stage2: forward discard result loc to more expressions
Diffstat (limited to 'test/behavior/basic.zig')
| -rw-r--r-- | test/behavior/basic.zig | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index d6447862cf..c36fa0c921 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -819,3 +819,37 @@ test "if expression type coercion" { const x: u16 = if (cond) 1 else 0; try expect(@as(u16, x) == 1); } + +test "discarding the result of various expressions" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + const S = struct { + fn foo() !u32 { + return 1; + } + fn bar() ?u32 { + return 1; + } + }; + _ = S.bar() orelse { + // do nothing + }; + _ = S.foo() catch { + // do nothing + }; + _ = switch (1) { + 1 => 1, + 2 => {}, + else => return, + }; + _ = try S.foo(); + _ = if (S.bar()) |some| some else {}; + _ = blk: { + if (S.bar()) |some| break :blk some; + break :blk; + }; + _ = while (S.bar()) |some| break some else {}; + _ = for ("foo") |char| break char else {}; +} |
