diff --git a/lib/std/json/stringify.zig b/lib/std/json/stringify.zig index 95800b832c..c8084a7b61 100644 --- a/lib/std/json/stringify.zig +++ b/lib/std/json/stringify.zig @@ -167,7 +167,7 @@ pub fn stringify( return value.jsonStringify(options, out_stream); } - @compileError("Unable to stringify enum '" ++ @typeName(T) ++ "'"); + return try encodeJsonString(@tagName(value), options, out_stream); }, .Union => { if (comptime std.meta.trait.hasFn("jsonStringify")(T)) { diff --git a/lib/std/json/stringify_test.zig b/lib/std/json/stringify_test.zig index d9fab3c6e7..7fff97f13e 100644 --- a/lib/std/json/stringify_test.zig +++ b/lib/std/json/stringify_test.zig @@ -73,6 +73,15 @@ test "stringify many-item sentinel-terminated string" { try teststringify("\"with unicode\\u0001\"", @as([*:0]const u8, "with unicode\u{1}"), StringifyOptions{ .string = .{ .String = .{ .escape_unicode = true } } }); } +test "stringify enums" { + const E = enum { + foo, + bar, + }; + try teststringify("\"foo\"", E.foo, .{}); + try teststringify("\"bar\"", E.bar, .{}); +} + test "stringify tagged unions" { const T = union(enum) { nothing,