From 7b99189f191df47c400693f324128d26804ee84d Mon Sep 17 00:00:00 2001 From: Curtis Tate Wilkinson Date: Sat, 18 Nov 2023 22:03:10 +1000 Subject: Add struct declaration location to empty root struct field member error --- src/Sema.zig | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/Sema.zig') diff --git a/src/Sema.zig b/src/Sema.zig index aa6dab0b2b..d13770940e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -5241,15 +5241,19 @@ fn failWithBadMemberAccess( .Enum => "enum", else => unreachable, }; - if (agg_ty.getOwnerDeclOrNull(mod)) |some| if (mod.declIsRoot(some)) { - return sema.fail(block, field_src, "root struct of file '{}' has no member named '{}'", .{ - agg_ty.fmt(mod), field_name.fmt(&mod.intern_pool), - }); - }; const msg = msg: { - const msg = try sema.errMsg(block, field_src, "{s} '{}' has no member named '{}'", .{ - kw_name, agg_ty.fmt(mod), field_name.fmt(&mod.intern_pool), - }); + const msg = blk: { + if (agg_ty.getOwnerDeclOrNull(mod)) |some| if (mod.declIsRoot(some)) { + break :blk try sema.errMsg(block, field_src, "root struct of file '{}' has no member named '{}'", .{ + agg_ty.fmt(mod), field_name.fmt(&mod.intern_pool), + }); + }; + + break :blk try sema.errMsg(block, field_src, "{s} '{}' has no member named '{}'", .{ + kw_name, agg_ty.fmt(mod), field_name.fmt(&mod.intern_pool), + }); + }; + errdefer msg.destroy(sema.gpa); try sema.addDeclaredHereNote(msg, agg_ty); break :msg msg; -- cgit v1.2.3