aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 4244dd9aed..f4ab11969a 100644
--- a/src/Sema.zig
+++ b/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);