Commit ba6e5e65a0
Changed files (2)
lib
std
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)) {
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,