diff options
| -rw-r--r-- | mrblib/hash.rb | 1 | ||||
| -rw-r--r-- | test/t/hash.rb | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/mrblib/hash.rb b/mrblib/hash.rb index e3e709070..782111459 100644 --- a/mrblib/hash.rb +++ b/mrblib/hash.rb @@ -154,6 +154,7 @@ class Hash # # ISO 15.2.13.4.23 def replace(hash) + raise TypeError, "can't convert argument into Hash" unless hash.respond_to?(:to_hash) self.clear hash = hash.to_hash hash.each_key{|k| diff --git a/test/t/hash.rb b/test/t/hash.rb index 3196cc97a..c8d7a70ef 100644 --- a/test/t/hash.rb +++ b/test/t/hash.rb @@ -239,6 +239,10 @@ assert('Hash#replace', '15.2.13.4.23') do a = Hash.new{|h,x| x} b.replace(a) assert_equal(127, b[127]) + + assert_raise(TypeError) do + { 'abc_key' => 'abc_value' }.replace "a" + end end assert('Hash#shift', '15.2.13.4.24') do |
