diff --git a/src/Sema.zig b/src/Sema.zig index 5151904f0b..90de77a57e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -26555,6 +26555,10 @@ fn beginComptimePtrLoad( .null_value => { return sema.fail(block, src, "attempt to use null value", .{}); }, + .opt_payload => blk: { + const opt_payload = ptr_val.castTag(.opt_payload).?.data; + break :blk try sema.beginComptimePtrLoad(block, src, opt_payload, null); + }, .zero, .one, diff --git a/test/behavior/type_info.zig b/test/behavior/type_info.zig index 80a3c7210a..af1b740834 100644 --- a/test/behavior/type_info.zig +++ b/test/behavior/type_info.zig @@ -565,3 +565,10 @@ test "typeInfo resolves usingnamespace declarations" { try expect(@typeInfo(B).Struct.decls.len == 2); //a } + +test "value from struct @typeInfo default_value can be loaded at comptime" { + comptime { + const a = @typeInfo(@TypeOf(.{ .foo = @as(u8, 1) })).Struct.fields[0].default_value; + try expect(@ptrCast(*const u8, a).* == 1); + } +}