| ... | @@ -467,27 +467,14 @@ fn formatType(value: anytype, comptime fmt: []const u8, options: FormatOptions, | ... | @@ -467,27 +467,14 @@ fn formatType(value: anytype, comptime fmt: []const u8, options: FormatOptions, |
| 467 | return writer.writeAll(@errorName(value)); | 467 | return writer.writeAll(@errorName(value)); |
| 468 | }, | 468 | }, |
| 469 | .@"enum" => |enumInfo| { | 469 | .@"enum" => |enumInfo| { |
| 470 | try writer.writeAll(@typeName(T)); | 470 | if (comptime std.mem.eql(u8, actual_fmt, "d")) { |
| 471 | if (enumInfo.is_exhaustive) { | 471 | try formatInt(@intFromEnum(value), 10, .lower, options, writer); |
| 472 | if (actual_fmt.len != 0) invalidFmtError(fmt, value); | | |
| 473 | try writer.writeAll("."); | | |
| 474 | try writer.writeAll(@tagName(value)); | | |
| 475 | return; | 472 | return; |
| 476 | } | 473 | } |
| 477 | | 474 | if (comptime std.mem.eql(u8, actual_fmt, "s") and enumInfo.is_exhaustive) { |
| 478 | // Use @tagName only if value is one of known fields | 475 | try writer.writeAll(@tagName(value)); |
| 479 | @setEvalBranchQuota(3 * enumInfo.fields.len); | 476 | return; |
| 480 | inline for (enumInfo.fields) |enumField| { | | |
| 481 | if (@intFromEnum(value) == enumField.value) { | | |
| 482 | try writer.writeAll("."); | | |
| 483 | try writer.writeAll(@tagName(value)); | | |
| 484 | return; | | |
| 485 | } | | |
| 486 | } | 477 | } |
| 487 | | | |
| 488 | try writer.writeAll("("); | | |
| 489 | try formatType(@intFromEnum(value), actual_fmt, options, writer, max_depth); | | |
| 490 | try writer.writeAll(")"); | | |
| 491 | }, | 478 | }, |
| 492 | .@"union" => |info| { | 479 | .@"union" => |info| { |
| 493 | if (actual_fmt.len != 0) invalidFmtError(fmt, value); | 480 | if (actual_fmt.len != 0) invalidFmtError(fmt, value); |