aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-09-03 15:52:47 +0100
committergingerBill <bill@gingerbill.org>2021-09-03 15:52:47 +0100
commite3809f5c1b10963bcdbcebe925f0d3a31c0ea893 (patch)
tree2df9a1f28cda7511d0ad03e288d40b8cf6c5f686
parent4b7dcc15138d21ce124e85e488345cd715af0a86 (diff)
Allow comparisons of `any` if `reflect.equal` if `including_indirect_array_recursion` is enabled
-rw-r--r--core/reflect/reflect.odin9
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: