aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Sengir <william@sengir.com>2022-05-11 03:34:44 -0700
committerWilliam Sengir <william@sengir.com>2022-05-11 03:47:03 -0700
commitbd32a0f3db2d03749e7aef22cbc2aa6f85b689d1 (patch)
tree63bf26f353e75d1ec7a606992df7a1b48fcde279
parent6608fa135321c2caa989a4e0357307874c644b6b (diff)
downloadzig-bd32a0f3db2d03749e7aef22cbc2aa6f85b689d1.tar.gz
zig-bd32a0f3db2d03749e7aef22cbc2aa6f85b689d1.zip
Sema: add "declared here" note to `zirErrSetCast`
-rw-r--r--src/Sema.zig18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 2cc9b82410..d12b85e097 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -14215,12 +14215,18 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
if (!dest_ty.isAnyError()) {
const error_name = val.castTag(.@"error").?.data.name;
if (!dest_ty.errorSetHasField(error_name)) {
- return sema.fail(
- block,
- src,
- "error.{s} not a member of error set '{}'",
- .{ error_name, dest_ty.fmt(sema.mod) },
- );
+ const msg = msg: {
+ const msg = try sema.errMsg(
+ block,
+ src,
+ "error.{s} not a member of error set '{}'",
+ .{ error_name, dest_ty.fmt(sema.mod) },
+ );
+ errdefer msg.destroy(sema.gpa);
+ try sema.addDeclaredHereNote(msg, dest_ty);
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(block, msg);
}
}