diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-12-08 21:59:43 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-08 21:59:43 -0500 |
| commit | 5c67f9ce7a4d9f5aedbe8cfba1f361922701a144 (patch) | |
| tree | 27572b3b063b780f3b82970c04f94981a017409d /src | |
| parent | 225ed65ed2cc88fce54660250feaeb44e45943fa (diff) | |
| parent | ee9fc54cd032b6ac0fcaa422aa9c2826fa370bfa (diff) | |
| download | zig-5c67f9ce7a4d9f5aedbe8cfba1f361922701a144.tar.gz zig-5c67f9ce7a4d9f5aedbe8cfba1f361922701a144.zip | |
Merge pull request #13827 from Vexu/fix-ci
TypedValue: fix handling of tuples represented as empty_struct_value
Diffstat (limited to 'src')
| -rw-r--r-- | src/TypedValue.zig | 16 | ||||
| -rw-r--r-- | src/type.zig | 1 |
2 files changed, 4 insertions, 13 deletions
diff --git a/src/TypedValue.zig b/src/TypedValue.zig index 10ab88b866..3c1972c78d 100644 --- a/src/TypedValue.zig +++ b/src/TypedValue.zig @@ -142,12 +142,10 @@ pub fn print( .extern_options_type => return writer.writeAll("std.builtin.ExternOptions"), .type_info_type => return writer.writeAll("std.builtin.Type"), - .empty_struct_value => return writer.writeAll(".{}"), - .aggregate => { + .empty_struct_value, .aggregate => { if (level == 0) { return writer.writeAll(".{ ... }"); } - const values = val.castTag(.aggregate).?; if (ty.zigTypeTag() == .Struct) { try writer.writeAll(".{"); const max_len = std.math.min(ty.structFieldCount(), max_aggregate_items); @@ -161,13 +159,7 @@ pub fn print( } try print(.{ .ty = ty.structFieldType(i), - .val = switch (ty.containerLayout()) { - .Packed => values.data[i], - else => ty.structFieldValueComptime(i) orelse b: { - const vals = values.data; - break :b vals[i]; - }, - }, + .val = val.fieldValue(ty, i), }, writer, level - 1, mod); } if (ty.structFieldCount() > max_aggregate_items) { @@ -184,7 +176,7 @@ pub fn print( var i: u32 = 0; while (i < max_len) : (i += 1) { - buf[i] = std.math.cast(u8, values.data[i].toUnsignedInt(target)) orelse break :str; + buf[i] = std.math.cast(u8, val.fieldValue(ty, i).toUnsignedInt(target)) orelse break :str; } const truncated = if (len > max_string_len) " (truncated)" else ""; @@ -199,7 +191,7 @@ pub fn print( if (i != 0) try writer.writeAll(", "); try print(.{ .ty = elem_ty, - .val = values.data[i], + .val = val.fieldValue(ty, i), }, writer, level - 1, mod); } if (len > max_aggregate_items) { diff --git a/src/type.zig b/src/type.zig index f587bdc490..1aefa8f7a1 100644 --- a/src/type.zig +++ b/src/type.zig @@ -5670,7 +5670,6 @@ pub const Type = extern union { switch (ty.tag()) { .@"struct" => { const struct_obj = ty.castTag(.@"struct").?.data; - assert(struct_obj.layout != .Packed); const field = struct_obj.fields.values()[index]; if (field.is_comptime) { return field.default_val; |
