zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 1f0b77b3b88112ef458f62c23df72003c843e7cc (tree)
parent a201d80253c79bd6a024cc3dfdad803570fe6c3b
Author: g-w1 <58830309+g-w1@users.noreply.github.com>
Date:   Thu,  8 Jul 2021 14:35:43 -0400

stage2 type.zig: implement eql of error unions (#9334)


Diffstat:
Msrc/type.zig | 6+++++-
Mtest/stage2/wasm.zig | 11+++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/type.zig b/src/type.zig @@ -520,9 +520,13 @@ pub const Type = extern union { } return a.tag() == b.tag(); }, + .ErrorUnion => { + const a_data = a.castTag(.error_union).?.data; + const b_data = b.castTag(.error_union).?.data; + return a_data.error_set.eql(b_data.error_set) and a_data.payload.eql(b_data.payload); + }, .Opaque, .Float, - .ErrorUnion, .ErrorSet, .BoundFn, .Frame, diff --git a/test/stage2/wasm.zig b/test/stage2/wasm.zig @@ -600,5 +600,16 @@ pub fn addCases(ctx: *TestContext) !void { \\ return error.Bruh; \\} , "69\n"); + case.addCompareOutput( + \\pub export fn _start() u32 { + \\ var e = foo(); + \\ const i = e catch 42; + \\ return i; + \\} + \\ + \\fn foo() anyerror!u32 { + \\ return error.Dab; + \\} + , "42\n"); } }