Bug #10315
closedOverride policy for duplicated keywords
Description
p({k1: 'a', k1: 'b'}) #=> {:k1=>"b"}
p({k1: 'a'}.merge({k1: 'b'})) #=> {:k1=>"b"}
p(k1: 'a', k1: 'b') #=> {:k1=>"b"}
p(k1: 'a', **{k1: 'b'}) #=> {:k1=>"a"}
IMO the last case should also output {:k1=>"b"}.
Nobu said that we should show warning for such duplication (especially for 1st and 3rd cases) because we can detect duplication while parsing/compiling.
Added by nobu (Nobuyoshi Nakada) over 10 years ago
Added by nobu (Nobuyoshi Nakada) over 10 years ago
vm.c: precedence of duplicated keys
- vm.c (kwmerge_i): override existing keys by new keys.
[ruby-core:65368] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Added by nobu (Nobuyoshi Nakada) over 10 years ago
parse.y: remove duplicate keys
- parse.y (remove_duplicate_keys): remove duplicate literal keys,
i.e., symbols and strings. [ruby-core:65368] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Added by nobu (Nobuyoshi Nakada) over 10 years ago
parse.y: should not eliminate value nodes
- parse.y (remove_duplicate_keys): should not simply eliminate all
value nodes, which may have side effects.
[ruby-core:65625] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Added by nobu (Nobuyoshi Nakada) over 10 years ago
parse.y: keep nodes linking
- parse.y (remove_duplicate_keys): should keep nodes linking not
to be collected. [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Added by nagachika (Tomoyuki Chikanaga) over 9 years ago
Added by nagachika (Tomoyuki Chikanaga) over 9 years ago
merge revision(s) 53050: [Backport #11501]
* doc/NEWS-0.2.2: add description about incompatible change in Hash
duplicated key overriding policy. [Bug #10315] [Bug #11501]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@53051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
parse.y: precedence of duplicated keys
former key has precedence even if duplicated literal keys
follow. [ruby-core:65368] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e