| author | |
| committer | |
| log | d0edaabf9d5fd4a8a8e43aef38d8970781dd1c86 |
| tree | dfae257fa21ba3489fb623b15ad425f2b5a3a427 |
| parent | 98037a02384cdd9fa9c71210fb35d24b82e61f36 |
Closes #137072 files changed, 28 insertions(+), 0 deletions(-)
src/value.zig+6| ... | @@ -2895,6 +2895,12 @@ pub const Value = extern union { | ... | @@ -2895,6 +2895,12 @@ pub const Value = extern union { |
| 2895 | return val; | 2895 | return val; |
| 2896 | }, | 2896 | }, |
| 2897 | 2897 | ||
| 2898 | .opt_payload_ptr => return val.castTag(.opt_payload_ptr).?.data.container_ptr.elemValueAdvanced(mod, index, arena, buffer), | ||
| 2899 | .eu_payload_ptr => return val.castTag(.eu_payload_ptr).?.data.container_ptr.elemValueAdvanced(mod, index, arena, buffer), | ||
| 2900 | |||
| 2901 | .opt_payload => return val.castTag(.opt_payload).?.data.elemValueAdvanced(mod, index, arena, buffer), | ||
| 2902 | .eu_payload => return val.castTag(.eu_payload).?.data.elemValueAdvanced(mod, index, arena, buffer), | ||
| 2903 | |||
| 2898 | else => unreachable, | 2904 | else => unreachable, |
| 2899 | } | 2905 | } |
| 2900 | } | 2906 | } |
test/behavior/type.zig+22| ... | @@ -535,3 +535,25 @@ test "Type.Fn" { | ... | @@ -535,3 +535,25 @@ test "Type.Fn" { |
| 535 | try std.testing.expectEqual(T, fn_type); | 535 | try std.testing.expectEqual(T, fn_type); |
| 536 | } | 536 | } |
| 537 | } | 537 | } |
| 538 | |||
| 539 | test "reified struct field name from optional payload" { | ||
| 540 | comptime { | ||
| 541 | const m_name: ?[1]u8 = "a".*; | ||
| 542 | if (m_name) |*name| { | ||
| 543 | const T = @Type(.{ .Struct = .{ | ||
| 544 | .layout = .Auto, | ||
| 545 | .fields = &.{.{ | ||
| 546 | .name = name, | ||
| 547 | .field_type = u8, | ||
| 548 | .default_value = null, | ||
| 549 | .is_comptime = false, | ||
| 550 | .alignment = 1, | ||
| 551 | }}, | ||
| 552 | .decls = &.{}, | ||
| 553 | .is_tuple = false, | ||
| 554 | } }); | ||
| 555 | var t: T = .{ .a = 123 }; | ||
| 556 | try std.testing.expect(t.a == 123); | ||
| 557 | } | ||
| 558 | } | ||
| 559 | } |