authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2021-06-06 12:39:07+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-06-08 21:02:56+03:00
logec4e67fb0e47ff742d0fd76c6b00b52c2a7983e4
tree5d98ca277629434fb8bb5a15fb6a44337c086844
parent9ac6d2861466e03407dddebf47354034be9a136c

std: Better formatting of tuple types

Skip the useless type name and the numeric field names.

1 files changed, 20 insertions(+), 0 deletions(-)

lib/std/fmt.zig+20
......@@ -495,6 +495,22 @@ pub fn formatType(
495495 }
496496 },
497497 .Struct => |info| {
498 if (info.is_tuple) {
499 // Skip the type and field names when formatting tuples.
500 if (max_depth == 0) {
501 return writer.writeAll("{ ... }");
502 }
503 try writer.writeAll("{");
504 inline for (info.fields) |f, i| {
505 if (i == 0) {
506 try writer.writeAll(" ");
507 } else {
508 try writer.writeAll(", ");
509 }
510 try formatType(@field(value, f.name), ANY, options, writer, max_depth - 1);
511 }
512 return writer.writeAll(" }");
513 }
498514 try writer.writeAll(@typeName(T));
499515 if (max_depth == 0) {
500516 return writer.writeAll("{ ... }");
......@@ -2164,6 +2180,10 @@ test "struct" {
21642180 };
21652181
21662182 try expectFmt("S{ .a = 456, .b = error.Unused }", "{}", .{inst});
2183 // Tuples
2184 try expectFmt("{ }", "{}", .{.{}});
2185 try expectFmt("{ -1 }", "{}", .{.{-1}});
2186 try expectFmt("{ -1, 42, 2.5e+04 }", "{}", .{.{ -1, 42, 0.25e5 }});
21672187}
21682188
21692189test "union" {