diff options
| author | William Sengir <william@sengir.com> | 2022-05-11 03:34:44 -0700 |
|---|---|---|
| committer | William Sengir <william@sengir.com> | 2022-05-11 03:47:03 -0700 |
| commit | bd32a0f3db2d03749e7aef22cbc2aa6f85b689d1 (patch) | |
| tree | 63bf26f353e75d1ec7a606992df7a1b48fcde279 | |
| parent | 6608fa135321c2caa989a4e0357307874c644b6b (diff) | |
| download | zig-bd32a0f3db2d03749e7aef22cbc2aa6f85b689d1.tar.gz zig-bd32a0f3db2d03749e7aef22cbc2aa6f85b689d1.zip | |
Sema: add "declared here" note to `zirErrSetCast`
| -rw-r--r-- | src/Sema.zig | 18 |
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); } } |
