From 6a6bffaa3b3bf897dbddf1aed85b50b98c9f61b2 Mon Sep 17 00:00:00 2001 From: Lyssieth Date: Thu, 28 Nov 2024 23:45:02 +0200 Subject: [PATCH] Improve `niceTypeName`, and also swap a warn to an err --- src/args/parsers/enumLiteral.zig | 2 +- src/args/utils.zig | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/args/parsers/enumLiteral.zig b/src/args/parsers/enumLiteral.zig index fa33ae2..3f4a682 100644 --- a/src/args/parsers/enumLiteral.zig +++ b/src/args/parsers/enumLiteral.zig @@ -38,7 +38,7 @@ fn parseEnumFromStr(comptime T: type, str: []const u8) !T { // todo: maybe find a way to get Zig tests to run without stderr *unless* they fail? } - log.warn("could not parse `{s}` as enum `{s}`", .{ str, @typeName(T) }); + log.err("could not parse `{s}` as enum `{s}`", .{ str, @typeName(T) }); log.warn("hint: try one of the following:", .{}); inline for (info.Enum.fields) |field| { diff --git a/src/args/utils.zig b/src/args/utils.zig index 75d482b..4e349c7 100644 --- a/src/args/utils.zig +++ b/src/args/utils.zig @@ -11,14 +11,24 @@ pub fn niceTypeName(comptime T: type) []const u8 { return "array"; } + if (std.mem.lastIndexOf(u8, name, ".")) |idx| { + return name[idx + 1 ..]; + } + return name; } const t = std.testing; test "nice type names" { + const Enum = enum(u8) { + ThisIs, + ATest, + }; + try t.expectEqualStrings("string", niceTypeName([]const u8)); try t.expectEqualStrings("array", niceTypeName(std.ArrayList(u8))); + try t.expectEqualStrings("Enum", niceTypeName(Enum)); try t.expectEqualStrings("u8", niceTypeName(u8)); }