authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-02-25 16:20:57+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-26 12:52:06-07:00
logbff7714a7c681ec41abf45a6cfc74a32ff8655dd
treef4fd12151470deb8a988e2d3dc3c5b17f363adc5
parentee149aaa03e586e48c32cce09bf488ae0e88d053

stage2: fix toAllocatedBytes on slices


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 }
806801
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;
808813
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}