authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-07-21 21:22:09+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-07-23 15:40:12+03:00
log5b29275240a57448514fe5c5d9e8edae3b2362cc
treefab3b7e4d0d9a3e17edc9ff14ffd4e67a31af904
parent881c0cb20b8cbde252ab38dff2c76886c4b72f1d

Sema: add some more 'declared here' notes


11 files changed, 25 insertions(+), 32 deletions(-)

src/Sema.zig+13-26
......@@ -6814,12 +6814,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
68146814 .{ dest_ty.fmt(sema.mod), int_val.fmtValue(sema.typeOf(operand), sema.mod) },
68156815 );
68166816 errdefer msg.destroy(sema.gpa);
6817 try sema.mod.errNoteNonLazy(
6818 dest_ty.declSrcLoc(sema.mod),
6819 msg,
6820 "enum declared here",
6821 .{},
6822 );
6817 try sema.addDeclaredHereNote(msg, dest_ty);
68236818 break :msg msg;
68246819 };
68256820 return sema.failWithOwnedErrorMsg(block, msg);
......@@ -19432,16 +19427,7 @@ fn fieldVal(
1943219427 return inst;
1943319428 }
1943419429 }
19435 // TODO add note: declared here
19436 const kw_name = switch (child_type.zigTypeTag()) {
19437 .Struct => "struct",
19438 .Opaque => "opaque",
19439 .Union => "union",
19440 else => unreachable,
19441 };
19442 return sema.fail(block, src, "{s} '{}' has no member named '{s}'", .{
19443 kw_name, child_type.fmt(sema.mod), field_name,
19444 });
19430 return sema.failWithBadMemberAccess(block, child_type, src, field_name);
1944519431 },
1944619432 else => {
1944719433 const msg = msg: {
......@@ -19783,7 +19769,13 @@ fn fieldCallBind(
1978319769 else => {},
1978419770 }
1978519771
19786 return sema.fail(block, src, "type '{}' has no field or member function named '{s}'", .{ concrete_ty.fmt(sema.mod), field_name });
19772 const msg = msg: {
19773 const msg = try sema.errMsg(block, src, "no field or member function named '{s}' in '{}'", .{ field_name, concrete_ty.fmt(sema.mod) });
19774 errdefer msg.destroy(sema.gpa);
19775 try sema.addDeclaredHereNote(msg, concrete_ty);
19776 break :msg msg;
19777 };
19778 return sema.failWithOwnedErrorMsg(block, msg);
1978719779}
1978819780
1978919781fn finishFieldCallBind(
......@@ -21176,16 +21168,11 @@ fn coerceExtra(
2117621168 const msg = try sema.errMsg(
2117721169 block,
2117821170 inst_src,
21179 "enum '{}' has no field named '{s}'",
21180 .{ dest_ty.fmt(sema.mod), bytes },
21171 "no field named '{s}' in enum '{}'",
21172 .{ bytes, dest_ty.fmt(sema.mod) },
2118121173 );
2118221174 errdefer msg.destroy(sema.gpa);
21183 try sema.mod.errNoteNonLazy(
21184 dest_ty.declSrcLoc(sema.mod),
21185 msg,
21186 "enum declared here",
21187 .{},
21188 );
21175 try sema.addDeclaredHereNote(msg, dest_ty);
2118921176 break :msg msg;
2119021177 };
2119121178 return sema.failWithOwnedErrorMsg(block, msg);
......@@ -26230,7 +26217,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
2623026217 const msg = msg: {
2623126218 const tree = try sema.getAstTree(&block_scope);
2623226219 const field_src = enumFieldSrcLoc(decl, tree.*, union_obj.node_offset, field_i);
26233 const msg = try sema.errMsg(&block_scope, field_src, "enum '{}' has no field named '{s}'", .{ union_obj.tag_ty.fmt(sema.mod), field_name });
26220 const msg = try sema.errMsg(&block_scope, field_src, "no field named '{s}' in enum '{}'", .{ field_name, union_obj.tag_ty.fmt(sema.mod) });
2623426221 errdefer msg.destroy(sema.gpa);
2623526222 try sema.addDeclaredHereNote(msg, union_obj.tag_ty);
2623626223 break :msg msg;
test/cases/aarch64-macos/hello_world_with_updates.0.zig+1
......@@ -3,3 +3,4 @@
33// target=aarch64-macos
44//
55// :107:9: error: struct 'tmp.tmp' has no member named 'main'
6// :7:1: note: struct declared here
test/cases/compile_errors/bogus_compile_var.zig+1
......@@ -6,3 +6,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(x)); }
66// target=native
77//
88// :1:29: error: struct 'builtin.builtin' has no member named 'bogus'
9// :1:1: note: struct declared here
test/cases/compile_errors/bogus_method_call_on_slice.zig+1-1
......@@ -8,4 +8,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
88// backend=stage2
99// target=native
1010//
11// :3:6: error: type '[]const u8' has no field or member function named 'copy'
11// :3:6: error: no field or member function named 'copy' in '[]const u8'
test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig+1-1
......@@ -11,5 +11,5 @@ export fn entry() void {
1111// backend=stage2
1212// target=native
1313//
14// :6:21: error: enum 'tmp.Foo' has no field named 'c'
14// :6:21: error: no field named 'c' in enum 'tmp.Foo'
1515// :1:13: note: enum declared here
test/cases/compile_errors/method_call_with_first_arg_type_primitive.zig+2-1
......@@ -18,4 +18,5 @@ export fn f() void {
1818// backend=stage2
1919// target=native
2020//
21// :14:9: error: type 'tmp.Foo' has no field or member function named 'init'
21// :14:9: error: no field or member function named 'init' in 'tmp.Foo'
22// :1:13: note: struct declared here
test/cases/compile_errors/method_call_with_first_arg_type_wrong_container.zig+2-1
......@@ -27,4 +27,5 @@ export fn foo() void {
2727// backend=llvm
2828// target=native
2929//
30// :23:6: error: type 'tmp.List' has no field or member function named 'init'
30// :23:6: error: no field or member function named 'init' in 'tmp.List'
31// :1:14: note: struct declared here
test/cases/compile_errors/stage2/union_extra_field.zig+1-1
......@@ -16,5 +16,5 @@ export fn entry() usize {
1616// error
1717// target=native
1818//
19// :10:5: error: enum 'tmp.E' has no field named 'd'
19// :10:5: error: no field named 'd' in enum 'tmp.E'
2020// :1:11: note: enum declared here
test/cases/x86_64-linux/hello_world_with_updates.0.zig+1
......@@ -3,3 +3,4 @@
33// target=x86_64-linux
44//
55// :107:9: error: struct 'tmp.tmp' has no member named 'main'
6// :7:1: note: struct declared here
test/cases/x86_64-macos/hello_world_with_updates.0.zig+1
......@@ -3,3 +3,4 @@
33// target=x86_64-macos
44//
55// :107:9: error: struct 'tmp.tmp' has no member named 'main'
6// :7:1: note: struct declared here
test/stage2/cbe.zig+1-1
......@@ -839,7 +839,7 @@ pub fn addCases(ctx: *TestContext) !void {
839839 \\ _ = x;
840840 \\}
841841 , &.{
842 ":3:17: error: enum 'tmp.E' has no field named 'd'",
842 ":3:17: error: no field named 'd' in enum 'tmp.E'",
843843 ":1:11: note: enum declared here",
844844 });
845845 }