diff options
| author | gingerBill <bill@gingerbill.org> | 2021-09-03 15:52:47 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-09-03 15:52:47 +0100 |
| commit | e3809f5c1b10963bcdbcebe925f0d3a31c0ea893 (patch) | |
| tree | 2df9a1f28cda7511d0ad03e288d40b8cf6c5f686 | |
| parent | 4b7dcc15138d21ce124e85e488345cd715af0a86 (diff) | |
Allow comparisons of `any` if `reflect.equal` if `including_indirect_array_recursion` is enabled
| -rw-r--r-- | core/reflect/reflect.odin | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin index db770b891..929a25c9a 100644 --- a/core/reflect/reflect.odin +++ b/core/reflect/reflect.odin @@ -1320,10 +1320,15 @@ equal :: proc(a, b: any, including_indirect_array_recursion := false, recursion_ switch v in t.variant { case Type_Info_Named: unreachable(); - case Type_Info_Any: - return false; case Type_Info_Tuple: unreachable(); + case Type_Info_Any: + if !including_indirect_array_recursion { + return false; + } + va := (^any)(a.data); + vb := (^any)(b.data); + return equal(va, vb, including_indirect_array_recursion, recursion_level+1); case Type_Info_Map: return false; case Type_Info_Relative_Slice: |