aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkinori MUSHA <knu@idaemons.org>2020-09-20 23:23:13 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-12-04 19:23:35 +0900
commit46fc8d78a5d23d3c9a24e1bcc3c5cde4bce888de (patch)
treea1e52a035081028a81b8c4708c8a76a84a04f3af
parent0adc426ca5cf83e57f5e8433a2f7b55fb7a1fad6 (diff)
downloadruby-46fc8d78a5d23d3c9a24e1bcc3c5cde4bce888de.tar.gz
[ruby/set] Resurrect support for Ruby 2.x
In Ruby 2.x, initialize_copy does not take a freeze option. https://github.com/ruby/set/commit/3da6c309df
-rw-r--r--lib/set.rb16
-rw-r--r--test/test_set.rb2
2 files changed, 13 insertions, 5 deletions
diff --git a/lib/set.rb b/lib/set.rb
index d405d81178..844d52ed54 100644
--- a/lib/set.rb
+++ b/lib/set.rb
@@ -136,10 +136,18 @@ class Set
@hash = orig.instance_variable_get(:@hash).dup
end
- # Clone internal hash.
- def initialize_clone(orig, freeze: nil)
- super
- @hash = orig.instance_variable_get(:@hash).clone(freeze: freeze)
+ if Kernel.instance_method(:initialize_clone).arity != 1
+ # Clone internal hash.
+ def initialize_clone(orig, **options)
+ super
+ @hash = orig.instance_variable_get(:@hash).clone(**options)
+ end
+ else
+ # Clone internal hash.
+ def initialize_clone(orig)
+ super
+ @hash = orig.instance_variable_get(:@hash).clone
+ end
end
def freeze # :nodoc:
diff --git a/test/test_set.rb b/test/test_set.rb
index 86f860222c..acb1cebe16 100644
--- a/test/test_set.rb
+++ b/test/test_set.rb
@@ -739,7 +739,7 @@ class TC_Set < Test::Unit::TestCase
set2.add 5
assert_equal Set[1,2,3,5], set2
assert_equal Set[1,2,3], set1
- end
+ end if Kernel.instance_method(:initialize_clone).arity != 1
def test_inspect
set1 = Set[1, 2]