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:
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");
}
}