diff --git a/lib/std/testing.zig b/lib/std/testing.zig index b99542e7e5..d12ac3bf21 100644 --- a/lib/std/testing.zig +++ b/lib/std/testing.zig @@ -760,7 +760,7 @@ fn expectEqualDeepInner(comptime T: type, expected: T, actual: T) error{TestExpe .error_set, => { if (actual != expected) { - print("expected {}, found {}\n", .{ expected, actual }); + print("expected {any}, found {any}\n", .{ expected, actual }); return error.TestExpectedEqual; } }, @@ -923,6 +923,18 @@ test "expectEqualDeep primitive type" { }.foo; try expectEqualDeep(fnType, fnType); } + // enum with formatter + { + const TestEnum = enum { + a, + b, + + pub fn format(self: @This(), writer: *std.Io.Writer) !void { + try writer.writeAll(@tagName(self)); + } + }; + try expectEqualDeep(TestEnum.b, TestEnum.b); + } } test "expectEqualDeep pointer" { diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index ac72d395cf..b7f149f092 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -1006,9 +1006,9 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE .field_name_start = str_index, }); switch (ri.rl) { - .discard, .none, .ref => unreachable, // no result type + .discard, .none, .ref, .inferred_ptr, .destructure => unreachable, // no result type .ty, .coerced_ty => return res, // `decl_literal` does the coercion for us - .ref_coerced_ty, .ptr, .inferred_ptr, .destructure => return rvalue(gz, ri, res, node), + .ref_coerced_ty, .ptr => return rvalue(gz, ri, res, node), } } else return simpleStrTok(gz, ri, tree.nodeMainToken(node), node, .enum_literal), .error_value => return simpleStrTok(gz, ri, tree.nodeMainToken(node) + 2, node, .error_value),