aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-12-08 21:59:43 -0500
committerGitHub <noreply@github.com>2022-12-08 21:59:43 -0500
commit5c67f9ce7a4d9f5aedbe8cfba1f361922701a144 (patch)
tree27572b3b063b780f3b82970c04f94981a017409d /src
parent225ed65ed2cc88fce54660250feaeb44e45943fa (diff)
parentee9fc54cd032b6ac0fcaa422aa9c2826fa370bfa (diff)
downloadzig-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.zig16
-rw-r--r--src/type.zig1
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;