From 1f0b77b3b88112ef458f62c23df72003c843e7cc Mon Sep 17 00:00:00 2001 From: g-w1 <58830309+g-w1@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:35:43 -0400 Subject: [PATCH] stage2 type.zig: implement eql of error unions (#9334) --- src/type.zig | 6 +++++- test/stage2/wasm.zig | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/type.zig b/src/type.zig index e8f0998332..34b7dc178b 100644 --- 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 index 60c746f4e0..f746be99d2 100644 --- 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"); } }