mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
Sema: tuples have no names to be used for reporting errors in finishStructInit
This commit is contained in:
parent
bea958df4d
commit
61ba225709
21
src/Sema.zig
21
src/Sema.zig
@ -19963,13 +19963,22 @@ fn finishStructInit(
|
||||
|
||||
const field_init = struct_type.fieldInit(ip, i);
|
||||
if (field_init == .none) {
|
||||
const field_name = struct_type.field_names.get(ip)[i];
|
||||
const template = "missing struct field: {}";
|
||||
const args = .{field_name.fmt(ip)};
|
||||
if (root_msg) |msg| {
|
||||
try sema.errNote(block, init_src, msg, template, args);
|
||||
if (!struct_type.isTuple(ip)) {
|
||||
const field_name = struct_type.field_names.get(ip)[i];
|
||||
const template = "missing struct field: {}";
|
||||
const args = .{field_name.fmt(ip)};
|
||||
if (root_msg) |msg| {
|
||||
try sema.errNote(block, init_src, msg, template, args);
|
||||
} else {
|
||||
root_msg = try sema.errMsg(block, init_src, template, args);
|
||||
}
|
||||
} else {
|
||||
root_msg = try sema.errMsg(block, init_src, template, args);
|
||||
const template = "missing tuple field with index {d}";
|
||||
if (root_msg) |msg| {
|
||||
try sema.errNote(block, init_src, msg, template, .{i});
|
||||
} else {
|
||||
root_msg = try sema.errMsg(block, init_src, template, .{i});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
field_inits[i] = Air.internedToRef(field_init);
|
||||
|
||||
@ -13,9 +13,23 @@ export fn f() void {
|
||||
_ = a;
|
||||
}
|
||||
|
||||
const B = struct { u32, u32 };
|
||||
export fn g() void {
|
||||
const b = B{0};
|
||||
_ = b;
|
||||
}
|
||||
export fn h() void {
|
||||
const c = B{};
|
||||
_ = c;
|
||||
}
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :9:16: error: missing struct field: x
|
||||
// :1:11: note: struct 'tmp.A' declared here
|
||||
// :18:16: error: missing tuple field with index 1
|
||||
// :16:11: note: struct declared here
|
||||
// :22:16: error: missing tuple field with index 0
|
||||
// :22:16: note: missing tuple field with index 1
|
||||
// :16:11: note: struct 'tmp.B' declared here
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user