commit 7b99189f191df47c400693f324128d26804ee84d (tree)
parent d44f822821839739c282fe325d9800ab086b456e
Author: Curtis Tate Wilkinson <curtistatewilkinson@gmail.com>
Date: Sat, 18 Nov 2023 22:03:10 +1000
Add struct declaration location to empty root struct field member error
Diffstat:
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git 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;
diff --git a/test/cases/compile_errors/bogus_compile_var.zig b/test/cases/compile_errors/bogus_compile_var.zig
@@ -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
diff --git a/test/cases/compile_errors/missing_main_fn_in_executable.zig b/test/cases/compile_errors/missing_main_fn_in_executable.zig
@@ -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