| author | |
| committer | |
| log | bff7714a7c681ec41abf45a6cfc74a32ff8655dd |
| tree | f4fd12151470deb8a988e2d3dc3c5b17f363adc5 |
| parent | ee149aaa03e586e48c32cce09bf488ae0e88d053 |
3 files changed, 20 insertions(+), 15 deletions(-)
src/value.zig+14-9| ... | @@ -791,19 +791,24 @@ pub const Value = extern union { | ... | @@ -791,19 +791,24 @@ pub const Value = extern union { |
| 791 | return decl_val.toAllocatedBytes(decl.ty, allocator); | 791 | return decl_val.toAllocatedBytes(decl.ty, allocator); |
| 792 | }, | 792 | }, |
| 793 | .the_only_possible_value => return &[_]u8{}, | 793 | .the_only_possible_value => return &[_]u8{}, |
| 794 | .slice => return toAllocatedBytes(val.castTag(.slice).?.data.ptr, ty, allocator), | 794 | .slice => { |
| 795 | else => { | 795 | const slice = val.castTag(.slice).?.data; |
| 796 | const result = try allocator.alloc(u8, @intCast(usize, ty.arrayLen())); | 796 | return arrayToAllocatedBytes(slice.ptr, slice.len.toUnsignedInt(), allocator); |
| 797 | var elem_value_buf: ElemValueBuffer = undefined; | ||
| 798 | for (result) |*elem, i| { | ||
| 799 | const elem_val = val.elemValueBuffer(i, &elem_value_buf); | ||
| 800 | elem.* = @intCast(u8, elem_val.toUnsignedInt()); | ||
| 801 | } | ||
| 802 | return result; | ||
| 803 | }, | 797 | }, |
| 798 | else => return arrayToAllocatedBytes(val, ty.arrayLen(), allocator), | ||
| 804 | } | 799 | } |
| 805 | } | 800 | } |
| 806 | 801 | ||
| 802 | fn arrayToAllocatedBytes(val: Value, len: u64, allocator: Allocator) ![]u8 { | ||
| 803 | const result = try allocator.alloc(u8, @intCast(usize, len)); | ||
| 804 | var elem_value_buf: ElemValueBuffer = undefined; | ||
| 805 | for (result) |*elem, i| { | ||
| 806 | const elem_val = val.elemValueBuffer(i, &elem_value_buf); | ||
| 807 | elem.* = @intCast(u8, elem_val.toUnsignedInt()); | ||
| 808 | } | ||
| 809 | return result; | ||
| 810 | } | ||
| 811 | |||
| 807 | pub const ToTypeBuffer = Type.Payload.Bits; | 812 | pub const ToTypeBuffer = Type.Payload.Bits; |
| 808 | 813 | ||
| 809 | /// Asserts that the value is representable as a type. | 814 | /// Asserts that the value is representable as a type. |
test/behavior.zig+3-3| ... | @@ -127,8 +127,11 @@ test { | ... | @@ -127,8 +127,11 @@ test { |
| 127 | _ = @import("behavior/bugs/726.zig"); | 127 | _ = @import("behavior/bugs/726.zig"); |
| 128 | _ = @import("behavior/bugs/1421.zig"); | 128 | _ = @import("behavior/bugs/1421.zig"); |
| 129 | _ = @import("behavior/bugs/1442.zig"); | 129 | _ = @import("behavior/bugs/1442.zig"); |
| 130 | _ = @import("behavior/bugs/1607.zig"); | ||
| 130 | _ = @import("behavior/bugs/2114.zig"); | 131 | _ = @import("behavior/bugs/2114.zig"); |
| 132 | _ = @import("behavior/bugs/3384.zig"); | ||
| 131 | _ = @import("behavior/bugs/3742.zig"); | 133 | _ = @import("behavior/bugs/3742.zig"); |
| 134 | _ = @import("behavior/bugs/5398.zig"); | ||
| 132 | _ = @import("behavior/struct_contains_null_ptr_itself.zig"); | 135 | _ = @import("behavior/struct_contains_null_ptr_itself.zig"); |
| 133 | _ = @import("behavior/switch_prong_err_enum.zig"); | 136 | _ = @import("behavior/switch_prong_err_enum.zig"); |
| 134 | _ = @import("behavior/switch_prong_implicit_cast.zig"); | 137 | _ = @import("behavior/switch_prong_implicit_cast.zig"); |
| ... | @@ -147,11 +150,8 @@ test { | ... | @@ -147,11 +150,8 @@ test { |
| 147 | _ = @import("behavior/bugs/828.zig"); | 150 | _ = @import("behavior/bugs/828.zig"); |
| 148 | _ = @import("behavior/bugs/920.zig"); | 151 | _ = @import("behavior/bugs/920.zig"); |
| 149 | _ = @import("behavior/bugs/1120.zig"); | 152 | _ = @import("behavior/bugs/1120.zig"); |
| 150 | _ = @import("behavior/bugs/1607.zig"); | ||
| 151 | _ = @import("behavior/bugs/1851.zig"); | 153 | _ = @import("behavior/bugs/1851.zig"); |
| 152 | _ = @import("behavior/bugs/3384.zig"); | ||
| 153 | _ = @import("behavior/bugs/3779.zig"); | 154 | _ = @import("behavior/bugs/3779.zig"); |
| 154 | _ = @import("behavior/bugs/5398.zig"); | ||
| 155 | _ = @import("behavior/bugs/5413.zig"); | 155 | _ = @import("behavior/bugs/5413.zig"); |
| 156 | _ = @import("behavior/bugs/5487.zig"); | 156 | _ = @import("behavior/bugs/5487.zig"); |
| 157 | _ = @import("behavior/bugs/6456.zig"); | 157 | _ = @import("behavior/bugs/6456.zig"); |
test/behavior/bugs/5398.zig+3-3| ... | @@ -25,7 +25,7 @@ test "assignment of field with padding" { | ... | @@ -25,7 +25,7 @@ test "assignment of field with padding" { |
| 25 | .emits_shadows = false, | 25 | .emits_shadows = false, |
| 26 | }, | 26 | }, |
| 27 | }; | 27 | }; |
| 28 | try testing.expectEqual(false, renderable.material.transparent); | 28 | try testing.expect(false == renderable.material.transparent); |
| 29 | try testing.expectEqual(false, renderable.material.emits_shadows); | 29 | try testing.expect(false == renderable.material.emits_shadows); |
| 30 | try testing.expectEqual(true, renderable.material.render_color); | 30 | try testing.expect(true == renderable.material.render_color); |
| 31 | } | 31 | } |