Add struct declaration location to empty root struct field member error

This commit is contained in:
Curtis Tate Wilkinson 2023-11-18 22:03:10 +10:00 committed by GitHub
parent d44f822821
commit 7b99189f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 8 deletions

View File

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

View File

@ -8,3 +8,4 @@ export fn entry() usize {
// target=native
//
// :1:29: error: root struct of file 'builtin' has no member named 'bogus'
// note: struct declared here

View File

@ -4,6 +4,7 @@
// output_mode=Exe
//
// : error: root struct of file 'tmp' has no member named 'main'
// : note: struct declared here
// : note: called from here
// : note: called from here
// : note: called from here