[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>

I'll try to be brief so we can discuss all this. tl;dr: RubySpec is

19 messages 2015/01/05

[ruby-core:67785] Change in hash key values between 2.1 and 2.2

From: Anthony Crumley <anthony.crumley@...>
Date: 2015-01-24 04:47:32 UTC
List: ruby-core #67785
This RubySpec specification reveals a difference between how 2.1 and 2.2
handles ** applied to a variable in a hash.  The 2.2 behavior seems to be
more consistent but was this change a regression or was it intentional?

https://github.com/anthonycrumley/rubyspec/blob/master/language/hash_spec.rb#L92-L97

Hash literal calls #to_hash to convert an '**obj' element FAILED
Expected {:a=>2, :b=>3, :c=>3}
 to equal {:a=>1, :b=>3, :c=>3}

/vagrant/spec/rubyspec/language/hash_spec.rb:96:in `block (2 levels) in
<top (required)>'
/vagrant/spec/rubyspec/language/hash_spec.rb:3:in `<top (required)>'

Below are examples of the same behavior in irb.

2.1.5 :001 > h = {a: 1}
 => {:a=>1}
2.1.5 :002 > {a: 2, **h}
 => {:a=>2}
2.1.5 :003 > {a: 2, **h, a: 3}
 => {:a=>3}
2.1.5 :004 > {**h, a: 3}
 => {:a=>3}
2.1.5 :005 > {a: 2, a: 3}
 => {:a=>3}

2.2.0 :001 > h = {a: 1}
 => {:a=>1}
2.2.0 :002 > {a: 2, **h}
 => {:a=>1}
2.2.0 :003 > {a: 2, **h, a: 3}
 => {:a=>3}
2.2.0 :004 > {**h, a: 3}
 => {:a=>3}
2.2.0 :005 > {a: 2, a: 3}
(irb):1: warning: duplicated key at line 1 ignored: :a
 => {:a=>3}

In This Thread

Prev Next