From 759b0fe00a5c58d498f758dcafe1abb20f6c40b6 Mon Sep 17 00:00:00 2001 From: travisstaloch Date: Sat, 23 Sep 2023 13:25:57 -0700 Subject: [PATCH] std.testing: expectEqualDeep() - support self-referential structs --- lib/std/testing.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/std/testing.zig b/lib/std/testing.zig index 17ac0d4b04..4dda8a0d0d 100644 --- a/lib/std/testing.zig +++ b/lib/std/testing.zig @@ -691,8 +691,9 @@ pub fn expectStringEndsWith(actual: []const u8, expected_ends_with: []const u8) /// Container types(like Array/Slice/Vector) deeply equal when their corresponding elements are deeply equal. /// Pointer values are deeply equal if values they point to are deeply equal. /// -/// Note: Self-referential structs are not supported (e.g. things like std.SinglyLinkedList) -pub fn expectEqualDeep(expected: anytype, actual: @TypeOf(expected)) !void { +/// Note: Self-referential structs are supported (e.g. things like std.SinglyLinkedList) +/// but may cause infinite recursion or stack overflow when a container has a pointer to itself. +pub fn expectEqualDeep(expected: anytype, actual: @TypeOf(expected)) error{TestExpectedEqual}!void { switch (@typeInfo(@TypeOf(actual))) { .NoReturn, .Opaque,