summaryrefslogtreecommitdiff
path: root/lib/set.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/set.rb')
-rw-r--r--lib/set.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/set.rb b/lib/set.rb
index db57594d0a..f00cfac0c5 100644
--- a/lib/set.rb
+++ b/lib/set.rb
@@ -91,9 +91,9 @@ class Set
def do_with_enum(enum, &block) # :nodoc:
if enum.respond_to?(:each_entry)
- enum.each_entry(&block)
+ enum.each_entry(&block) if block
elsif enum.respond_to?(:each)
- enum.each(&block)
+ enum.each(&block) if block
else
raise ArgumentError, "value must be enumerable"
end
@@ -149,12 +149,12 @@ class Set
def replace(enum)
if enum.instance_of?(self.class)
@hash.replace(enum.instance_variable_get(:@hash))
+ self
else
+ do_with_enum(enum)
clear
merge(enum)
end
-
- self
end
# Converts the set to an array. The order of elements is uncertain.