diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig index a112528ab8..f3c43c5590 100644 --- a/lib/std/fmt.zig +++ b/lib/std/fmt.zig @@ -359,38 +359,24 @@ pub fn formatType( }, .Enum => |enumInfo| { try out_stream.writeAll(@typeName(T)); - - var has_name: bool = undefined; if (enumInfo.is_exhaustive) { - has_name = true; - } else { - has_name = false; - // Use @tagName only if value is one of known fields - inline for (enumInfo.fields) |enumField| { - if (@enumToInt(value) == enumField.value) { - has_name = true; - break; - } + try out_stream.writeAll("."); + try out_stream.writeAll(@tagName(value)); + return; + } + + // Use @tagName only if value is one of known fields + inline for (enumInfo.fields) |enumField| { + if (@enumToInt(value) == enumField.value) { + try out_stream.writeAll("."); + try out_stream.writeAll(@tagName(value)); + return; } } - var use_name = has_name; - if (comptime std.mem.eql(u8, fmt, "x") or - comptime std.mem.eql(u8, fmt, "X") or - comptime std.mem.eql(u8, fmt, "d") or - comptime std.mem.eql(u8, fmt, "b")) - { - use_name = false; - } - - if (use_name) { - try out_stream.writeAll("."); - try out_stream.writeAll(@tagName(value)); - } else { - try out_stream.writeAll("("); - try formatType(@enumToInt(value), fmt, options, out_stream, max_depth); - try out_stream.writeAll(")"); - } + try out_stream.writeAll("("); + try formatType(@enumToInt(value), fmt, options, out_stream, max_depth); + try out_stream.writeAll(")"); }, .Union => { try out_stream.writeAll(@typeName(T)); @@ -1331,8 +1317,8 @@ test "enum" { const value = Enum.Two; try testFmt("enum: Enum.Two\n", "enum: {}\n", .{value}); try testFmt("enum: Enum.Two\n", "enum: {}\n", .{&value}); - try testFmt("enum: Enum(0)\n", "enum: {x}\n", .{Enum.One}); - try testFmt("enum: Enum(1)\n", "enum: {X}\n", .{Enum.Two}); + try testFmt("enum: Enum.One\n", "enum: {x}\n", .{Enum.One}); + try testFmt("enum: Enum.Two\n", "enum: {X}\n", .{Enum.Two}); } test "non-exhaustive enum" { @@ -1344,9 +1330,9 @@ test "non-exhaustive enum" { try testFmt("enum: Enum.One\n", "enum: {}\n", .{Enum.One}); try testFmt("enum: Enum.Two\n", "enum: {}\n", .{Enum.Two}); try testFmt("enum: Enum(4660)\n", "enum: {}\n", .{@intToEnum(Enum, 0x1234)}); - try testFmt("enum: Enum(f)\n", "enum: {x}\n", .{Enum.One}); - try testFmt("enum: Enum(beef)\n", "enum: {x}\n", .{Enum.Two}); - try testFmt("enum: Enum(BEEF)\n", "enum: {X}\n", .{Enum.Two}); + try testFmt("enum: Enum.One\n", "enum: {x}\n", .{Enum.One}); + try testFmt("enum: Enum.Two\n", "enum: {x}\n", .{Enum.Two}); + try testFmt("enum: Enum.Two\n", "enum: {X}\n", .{Enum.Two}); try testFmt("enum: Enum(1234)\n", "enum: {x}\n", .{@intToEnum(Enum, 0x1234)}); }