diff --git a/src/Sema.zig b/src/Sema.zig index 686d9c11cb..00d323a219 100644 --- a/src/Sema.zig +++ b/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( diff --git a/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig index fc9667910b..97f440da3b 100644 --- a/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig +++ b/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