Commit 1f0b77b3b8

g-w1 <58830309+g-w1@users.noreply.github.com>
2021-07-08 20:35:43
stage2 type.zig: implement eql of error unions (#9334)
1 parent a201d80
Changed files (2)
src
test
stage2
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,
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");
     }
 }