mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 00:35:10 +00:00
Sema: add some more 'declared here' notes
This commit is contained in:
parent
881c0cb20b
commit
5b29275240
39
src/Sema.zig
39
src/Sema.zig
@ -6814,12 +6814,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
|
||||
.{ dest_ty.fmt(sema.mod), int_val.fmtValue(sema.typeOf(operand), sema.mod) },
|
||||
);
|
||||
errdefer msg.destroy(sema.gpa);
|
||||
try sema.mod.errNoteNonLazy(
|
||||
dest_ty.declSrcLoc(sema.mod),
|
||||
msg,
|
||||
"enum declared here",
|
||||
.{},
|
||||
);
|
||||
try sema.addDeclaredHereNote(msg, dest_ty);
|
||||
break :msg msg;
|
||||
};
|
||||
return sema.failWithOwnedErrorMsg(block, msg);
|
||||
@ -19432,16 +19427,7 @@ fn fieldVal(
|
||||
return inst;
|
||||
}
|
||||
}
|
||||
// TODO add note: declared here
|
||||
const kw_name = switch (child_type.zigTypeTag()) {
|
||||
.Struct => "struct",
|
||||
.Opaque => "opaque",
|
||||
.Union => "union",
|
||||
else => unreachable,
|
||||
};
|
||||
return sema.fail(block, src, "{s} '{}' has no member named '{s}'", .{
|
||||
kw_name, child_type.fmt(sema.mod), field_name,
|
||||
});
|
||||
return sema.failWithBadMemberAccess(block, child_type, src, field_name);
|
||||
},
|
||||
else => {
|
||||
const msg = msg: {
|
||||
@ -19783,7 +19769,13 @@ fn fieldCallBind(
|
||||
else => {},
|
||||
}
|
||||
|
||||
return sema.fail(block, src, "type '{}' has no field or member function named '{s}'", .{ concrete_ty.fmt(sema.mod), field_name });
|
||||
const msg = msg: {
|
||||
const msg = try sema.errMsg(block, src, "no field or member function named '{s}' in '{}'", .{ field_name, concrete_ty.fmt(sema.mod) });
|
||||
errdefer msg.destroy(sema.gpa);
|
||||
try sema.addDeclaredHereNote(msg, concrete_ty);
|
||||
break :msg msg;
|
||||
};
|
||||
return sema.failWithOwnedErrorMsg(block, msg);
|
||||
}
|
||||
|
||||
fn finishFieldCallBind(
|
||||
@ -21176,16 +21168,11 @@ fn coerceExtra(
|
||||
const msg = try sema.errMsg(
|
||||
block,
|
||||
inst_src,
|
||||
"enum '{}' has no field named '{s}'",
|
||||
.{ dest_ty.fmt(sema.mod), bytes },
|
||||
"no field named '{s}' in enum '{}'",
|
||||
.{ bytes, dest_ty.fmt(sema.mod) },
|
||||
);
|
||||
errdefer msg.destroy(sema.gpa);
|
||||
try sema.mod.errNoteNonLazy(
|
||||
dest_ty.declSrcLoc(sema.mod),
|
||||
msg,
|
||||
"enum declared here",
|
||||
.{},
|
||||
);
|
||||
try sema.addDeclaredHereNote(msg, dest_ty);
|
||||
break :msg msg;
|
||||
};
|
||||
return sema.failWithOwnedErrorMsg(block, msg);
|
||||
@ -26230,7 +26217,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
|
||||
const msg = msg: {
|
||||
const tree = try sema.getAstTree(&block_scope);
|
||||
const field_src = enumFieldSrcLoc(decl, tree.*, union_obj.node_offset, field_i);
|
||||
const msg = try sema.errMsg(&block_scope, field_src, "enum '{}' has no field named '{s}'", .{ union_obj.tag_ty.fmt(sema.mod), field_name });
|
||||
const msg = try sema.errMsg(&block_scope, field_src, "no field named '{s}' in enum '{}'", .{ field_name, union_obj.tag_ty.fmt(sema.mod) });
|
||||
errdefer msg.destroy(sema.gpa);
|
||||
try sema.addDeclaredHereNote(msg, union_obj.tag_ty);
|
||||
break :msg msg;
|
||||
|
||||
@ -3,3 +3,4 @@
|
||||
// target=aarch64-macos
|
||||
//
|
||||
// :107:9: error: struct 'tmp.tmp' has no member named 'main'
|
||||
// :7:1: note: struct declared here
|
||||
|
||||
@ -6,3 +6,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(x)); }
|
||||
// target=native
|
||||
//
|
||||
// :1:29: error: struct 'builtin.builtin' has no member named 'bogus'
|
||||
// :1:1: note: struct declared here
|
||||
|
||||
@ -8,4 +8,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :3:6: error: type '[]const u8' has no field or member function named 'copy'
|
||||
// :3:6: error: no field or member function named 'copy' in '[]const u8'
|
||||
|
||||
@ -11,5 +11,5 @@ export fn entry() void {
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :6:21: error: enum 'tmp.Foo' has no field named 'c'
|
||||
// :6:21: error: no field named 'c' in enum 'tmp.Foo'
|
||||
// :1:13: note: enum declared here
|
||||
|
||||
@ -18,4 +18,5 @@ export fn f() void {
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :14:9: error: type 'tmp.Foo' has no field or member function named 'init'
|
||||
// :14:9: error: no field or member function named 'init' in 'tmp.Foo'
|
||||
// :1:13: note: struct declared here
|
||||
|
||||
@ -27,4 +27,5 @@ export fn foo() void {
|
||||
// backend=llvm
|
||||
// target=native
|
||||
//
|
||||
// :23:6: error: type 'tmp.List' has no field or member function named 'init'
|
||||
// :23:6: error: no field or member function named 'init' in 'tmp.List'
|
||||
// :1:14: note: struct declared here
|
||||
|
||||
@ -16,5 +16,5 @@ export fn entry() usize {
|
||||
// error
|
||||
// target=native
|
||||
//
|
||||
// :10:5: error: enum 'tmp.E' has no field named 'd'
|
||||
// :10:5: error: no field named 'd' in enum 'tmp.E'
|
||||
// :1:11: note: enum declared here
|
||||
|
||||
@ -3,3 +3,4 @@
|
||||
// target=x86_64-linux
|
||||
//
|
||||
// :107:9: error: struct 'tmp.tmp' has no member named 'main'
|
||||
// :7:1: note: struct declared here
|
||||
|
||||
@ -3,3 +3,4 @@
|
||||
// target=x86_64-macos
|
||||
//
|
||||
// :107:9: error: struct 'tmp.tmp' has no member named 'main'
|
||||
// :7:1: note: struct declared here
|
||||
|
||||
@ -839,7 +839,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\ _ = x;
|
||||
\\}
|
||||
, &.{
|
||||
":3:17: error: enum 'tmp.E' has no field named 'd'",
|
||||
":3:17: error: no field named 'd' in enum 'tmp.E'",
|
||||
":1:11: note: enum declared here",
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user