diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-06-07 20:07:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-07 20:07:28 -0400 |
| commit | 6ff7b437ff34e9a416a041c0c0ff8a65bae8daf5 (patch) | |
| tree | e8be8a2b2a1fa6524bead911f3607941d005d8ee /test/behavior | |
| parent | 3cb387338234620e00645417565dc234dc5105c2 (diff) | |
| parent | 413577c881963559f7f357bfd90f4ade6d6de20d (diff) | |
| download | zig-6ff7b437ff34e9a416a041c0c0ff8a65bae8daf5.tar.gz zig-6ff7b437ff34e9a416a041c0c0ff8a65bae8daf5.zip | |
Merge pull request #11813 from Vexu/stage2
`zig2 build test-std` finale
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/error.zig | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/behavior/error.zig b/test/behavior/error.zig index b735d70d73..ac51ec1eae 100644 --- a/test/behavior/error.zig +++ b/test/behavior/error.zig @@ -754,3 +754,45 @@ test "error union payload is properly aligned" { const blk = S.foo() catch unreachable; if (blk.a != 1) unreachable; } + +test "ret_ptr doesn't cause own inferred error set to be resolved" { + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + + const S = struct { + fn foo() !void {} + + fn doTheTest() !void { + errdefer @compileError("bad"); + + return try @This().foo(); + } + }; + try S.doTheTest(); +} + +test "simple else prong allowed even when all errors handled" { + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + + const S = struct { + fn foo() !u8 { + return error.Foo; + } + }; + var value = S.foo() catch |err| switch (err) { + error.Foo => 255, + else => |e| return e, + }; + try expect(value == 255); + value = S.foo() catch |err| switch (err) { + error.Foo => 255, + else => unreachable, + }; + try expect(value == 255); + value = S.foo() catch |err| switch (err) { + error.Foo => 255, + else => return, + }; + try expect(value == 255); +} |
