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

This commit is contained in:
g-w1 2021-07-08 14:35:43 -04:00 committed by GitHub
parent a201d80253
commit 1f0b77b3b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -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,

View File

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