Commit 4b0ef6a409
Changed files (2)
src
test
cases
compile_errors
src/Sema.zig
@@ -17613,11 +17613,11 @@ fn zirFieldType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
const extra = sema.code.extraData(Zir.Inst.FieldType, inst_data.payload_index).data;
const ty_src = inst_data.src();
- const field_src = inst_data.src();
+ const field_name_src: LazySrcLoc = .{ .node_offset_field_name = inst_data.src_node };
const aggregate_ty = try sema.resolveType(block, ty_src, extra.container_type);
if (aggregate_ty.tag() == .var_args_param) return sema.addType(aggregate_ty);
const field_name = sema.code.nullTerminatedString(extra.name_start);
- return sema.fieldType(block, aggregate_ty, field_name, field_src, ty_src);
+ return sema.fieldType(block, aggregate_ty, field_name, field_name_src, ty_src);
}
fn fieldType(
test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
@@ -12,9 +12,21 @@ export fn f() void {
_ = a;
}
+const Object = struct {
+ field_1: u32,
+ field_2: u32,
+};
+fn dump(_: Object) void {}
+pub export fn entry() void {
+ dump(.{ .field_1 = 123, .field_3 = 456 });
+}
+
+
// error
// backend=stage2
// target=native
//
// :10:10: error: no field named 'foo' in struct 'tmp.A'
// :1:11: note: struct declared here
+// :21:30: error: no field named 'field_3' in struct 'tmp.Object'
+// :15:16: note: struct declared here