diff --git a/src/ir.cpp b/src/ir.cpp index 5b1b9d9bff09..aeb03397ca21 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -18466,7 +18466,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr size_t byte_offset = LLVMOffsetOfElement(ira->codegen->target_data_ref, type_entry->type_ref, struct_field->gen_index); inner_fields[1].data.x_optional = create_const_vals(1); inner_fields[1].data.x_optional->special = ConstValSpecialStatic; - inner_fields[1].data.x_optional->type = ira->codegen->builtin_types.entry_usize; + inner_fields[1].data.x_optional->type = ira->codegen->builtin_types.entry_num_lit_int; bigint_init_unsigned(&inner_fields[1].data.x_optional->data.x_bigint, byte_offset); } diff --git a/test/stage1/behavior/type_info.zig b/test/stage1/behavior/type_info.zig index 510a56f61938..12a7c118b71e 100644 --- a/test/stage1/behavior/type_info.zig +++ b/test/stage1/behavior/type_info.zig @@ -289,3 +289,13 @@ fn testVector() void { expect(vec_info.Vector.len == 4); expect(vec_info.Vector.child == i32); } + +test "type info: optional field unwrapping" { + const Struct = struct { + cdOffset: u32, + }; + + const field = @typeInfo(Struct).Struct.fields[0]; + + _ = field.offset orelse 0; +}