mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
TypedValue: pretty print slices
This commit is contained in:
parent
095d51164f
commit
f8940a05ae
@ -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}),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user