From 9c12c2c7fcf30970cb5a25cf78df5d385fcc5e2e Mon Sep 17 00:00:00 2001 From: Alexander Momchilov Date: Mon, 18 Dec 2023 12:56:37 -0500 Subject: [PATCH] Remove `object_id` use in `Set#flatten_merge` --- lib/set.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/set.rb b/lib/set.rb index a946d3c..1ba7dd7 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -361,16 +361,15 @@ def to_set(klass = Set, *args, &block) klass.new(self, *args, &block) end - def flatten_merge(set, seen = Set.new) # :nodoc: + def flatten_merge(set, seen = Set.new.compare_by_identity) # :nodoc: set.each { |e| if e.is_a?(Set) - if seen.include?(e_id = e.object_id) + unless seen.add?(e) raise ArgumentError, "tried to flatten recursive Set" end - seen.add(e_id) flatten_merge(e, seen) - seen.delete(e_id) + seen.delete(e) else add(e) end