| ... | @@ -456,10 +456,10 @@ const ANY = "any"; | ... | @@ -456,10 +456,10 @@ const ANY = "any"; |
| 456 | | 456 | |
| 457 | pub fn defaultSpec(comptime T: type) [:0]const u8 { | 457 | pub fn defaultSpec(comptime T: type) [:0]const u8 { |
| 458 | switch (@typeInfo(T)) { | 458 | switch (@typeInfo(T)) { |
| 459 | .array => |_| return ANY, | 459 | .array, .vector => return ANY, |
| 460 | .pointer => |ptr_info| switch (ptr_info.size) { | 460 | .pointer => |ptr_info| switch (ptr_info.size) { |
| 461 | .One => switch (@typeInfo(ptr_info.child)) { | 461 | .One => switch (@typeInfo(ptr_info.child)) { |
| 462 | .array => |_| return ANY, | 462 | .array => return ANY, |
| 463 | else => {}, | 463 | else => {}, |
| 464 | }, | 464 | }, |
| 465 | .Many, .C => return "*", | 465 | .Many, .C => return "*", |
| ... | @@ -680,7 +680,7 @@ pub fn formatType( | ... | @@ -680,7 +680,7 @@ pub fn formatType( |
| 680 | try writer.writeAll("{ "); | 680 | try writer.writeAll("{ "); |
| 681 | var i: usize = 0; | 681 | var i: usize = 0; |
| 682 | while (i < info.len) : (i += 1) { | 682 | while (i < info.len) : (i += 1) { |
| 683 | try formatValue(value[i], actual_fmt, options, writer); | 683 | try formatType(value[i], actual_fmt, options, writer, max_depth - 1); |
| 684 | if (i < info.len - 1) { | 684 | if (i < info.len - 1) { |
| 685 | try writer.writeAll(", "); | 685 | try writer.writeAll(", "); |
| 686 | } | 686 | } |
| ... | @@ -2608,6 +2608,22 @@ test "vector" { | ... | @@ -2608,6 +2608,22 @@ test "vector" { |
| 2608 | try expectFmt("{ -2, -1, +0, +1 }", "{d:5}", .{vi64}); | 2608 | try expectFmt("{ -2, -1, +0, +1 }", "{d:5}", .{vi64}); |
| 2609 | try expectFmt("{ 1000, 2000, 3000, 4000 }", "{}", .{vu64}); | 2609 | try expectFmt("{ 1000, 2000, 3000, 4000 }", "{}", .{vu64}); |
| 2610 | try expectFmt("{ 3e8, 7d0, bb8, fa0 }", "{x}", .{vu64}); | 2610 | try expectFmt("{ 3e8, 7d0, bb8, fa0 }", "{x}", .{vu64}); |
| | 2611 | |
| | 2612 | const x: [4]u64 = undefined; |
| | 2613 | const vp: @Vector(4, *const u64) = [_]*const u64{ &x[0], &x[1], &x[2], &x[3] }; |
| | 2614 | const vop: @Vector(4, ?*const u64) = [_]?*const u64{ &x[0], null, null, &x[3] }; |
| | 2615 | |
| | 2616 | var expect_buffer: [@sizeOf(usize) * 2 * 4 + 64]u8 = undefined; |
| | 2617 | try expectFmt(try bufPrint( |
| | 2618 | &expect_buffer, |
| | 2619 | "{{ {}, {}, {}, {} }}", |
| | 2620 | .{ &x[0], &x[1], &x[2], &x[3] }, |
| | 2621 | ), "{}", .{vp}); |
| | 2622 | try expectFmt(try bufPrint( |
| | 2623 | &expect_buffer, |
| | 2624 | "{{ {?}, null, null, {?} }}", |
| | 2625 | .{ &x[0], &x[3] }, |
| | 2626 | ), "{any}", .{vop}); |
| 2611 | } | 2627 | } |
| 2612 | | 2628 | |
| 2613 | test "enum-literal" { | 2629 | test "enum-literal" { |