aboutsummaryrefslogtreecommitdiff
path: root/src/TypedValue.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/TypedValue.zig')
-rw-r--r--src/TypedValue.zig41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/TypedValue.zig b/src/TypedValue.zig
index b0d5d77010..43c26b254e 100644
--- a/src/TypedValue.zig
+++ b/src/TypedValue.zig
@@ -146,7 +146,8 @@ pub fn print(
if (ty.zigTypeTag() == .Struct) {
try writer.writeAll(".{ ");
const struct_fields = ty.structFields();
- const max_len = std.math.min(struct_fields.count(), max_aggregate_items);
+ const len = struct_fields.count();
+ const max_len = std.math.min(len, max_aggregate_items);
const field_names = struct_fields.keys();
const fields = struct_fields.values();
@@ -160,11 +161,15 @@ pub fn print(
.val = vals[i],
}, writer, level - 1, mod);
}
+ if (len > max_aggregate_items) {
+ try writer.writeAll(", ...");
+ }
return writer.writeAll(" }");
} else {
try writer.writeAll(".{ ");
const elem_ty = ty.elemType2();
- const max_len = std.math.min(ty.arrayLen(), max_aggregate_items);
+ const len = ty.arrayLen();
+ const max_len = std.math.min(len, max_aggregate_items);
var i: u32 = 0;
while (i < max_len) : (i += 1) {
@@ -174,6 +179,9 @@ pub fn print(
.val = vals[i],
}, writer, level - 1, mod);
}
+ if (len > max_aggregate_items) {
+ try writer.writeAll(", ...");
+ }
return writer.writeAll(" }");
}
},
@@ -292,10 +300,15 @@ pub fn print(
.ty = ty.elemType2(),
.val = val.castTag(.repeated).?.data,
};
- while (i < max_aggregate_items) : (i += 1) {
+ const len = ty.arrayLen();
+ const max_len = std.math.min(len, max_aggregate_items);
+ while (i < max_len) : (i += 1) {
if (i != 0) try writer.writeAll(", ");
try print(elem_tv, writer, level - 1, mod);
}
+ if (len > max_aggregate_items) {
+ try writer.writeAll(", ...");
+ }
return writer.writeAll(" }");
},
.empty_array_sentinel => {
@@ -309,7 +322,27 @@ pub fn print(
}, writer, level - 1, mod);
return writer.writeAll(" }");
},
- .slice => return writer.writeAll("(slice)"),
+ .slice => {
+ const payload = val.castTag(.slice).?.data;
+ try writer.writeAll(".{ ");
+ const elem_ty = ty.elemType2();
+ const len = payload.len.toUnsignedInt(target);
+ const max_len = std.math.min(len, max_aggregate_items);
+
+ var i: u32 = 0;
+ while (i < max_len) : (i += 1) {
+ if (i != 0) try writer.writeAll(", ");
+ var buf: Value.ElemValueBuffer = undefined;
+ try print(.{
+ .ty = elem_ty,
+ .val = payload.ptr.elemValueBuffer(mod, i, &buf),
+ }, writer, level - 1, mod);
+ }
+ if (len > max_aggregate_items) {
+ try writer.writeAll(", ...");
+ }
+ return writer.writeAll(" }");
+ },
.float_16 => return writer.print("{}", .{val.castTag(.float_16).?.data}),
.float_32 => return writer.print("{}", .{val.castTag(.float_32).?.data}),
.float_64 => return writer.print("{}", .{val.castTag(.float_64).?.data}),