mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
parent
98037a0238
commit
d0edaabf9d
@ -2895,6 +2895,12 @@ pub const Value = extern union {
|
||||
return val;
|
||||
},
|
||||
|
||||
.opt_payload_ptr => return val.castTag(.opt_payload_ptr).?.data.container_ptr.elemValueAdvanced(mod, index, arena, buffer),
|
||||
.eu_payload_ptr => return val.castTag(.eu_payload_ptr).?.data.container_ptr.elemValueAdvanced(mod, index, arena, buffer),
|
||||
|
||||
.opt_payload => return val.castTag(.opt_payload).?.data.elemValueAdvanced(mod, index, arena, buffer),
|
||||
.eu_payload => return val.castTag(.eu_payload).?.data.elemValueAdvanced(mod, index, arena, buffer),
|
||||
|
||||
else => unreachable,
|
||||
}
|
||||
}
|
||||
|
||||
@ -535,3 +535,25 @@ test "Type.Fn" {
|
||||
try std.testing.expectEqual(T, fn_type);
|
||||
}
|
||||
}
|
||||
|
||||
test "reified struct field name from optional payload" {
|
||||
comptime {
|
||||
const m_name: ?[1]u8 = "a".*;
|
||||
if (m_name) |*name| {
|
||||
const T = @Type(.{ .Struct = .{
|
||||
.layout = .Auto,
|
||||
.fields = &.{.{
|
||||
.name = name,
|
||||
.field_type = u8,
|
||||
.default_value = null,
|
||||
.is_comptime = false,
|
||||
.alignment = 1,
|
||||
}},
|
||||
.decls = &.{},
|
||||
.is_tuple = false,
|
||||
} });
|
||||
var t: T = .{ .a = 123 };
|
||||
try std.testing.expect(t.a == 123);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user