From: nagachika00@... Date: 2015-08-10T03:20:29+00:00 Subject: [ruby-core:70293] [Ruby trunk - Bug #11382] [Closed] Keyword arguments randomly nullified Issue #11382 has been updated by Tomoyuki Chikanaga. Status changed from Open to Closed Hello, Thank you for your report. I think it is related to #11027 and already finxed on trunk and ruby_2_2 branch HEAD. ~~~ $ ruby -v bug11382.rb ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14] a: "A", b: nil, others: {:cc=>"CC"} a: "A", b: "B", others: {:c=>"C"} $ rbenv shell 2.2.0-dev $ ruby -v bug11382.rb ruby 2.2.3p150 (2015-08-04 revision 51475) [x86_64-darwin14] a: "A", b: "B", others: {:cc=>"CC"} a: "A", b: "B", others: {:c=>"C"} ~~~ Could you try with ruby_2_2 HEAD? If you use rbenv and ruby-build, you can install it as 2.2.0-dev. ---------------------------------------- Bug #11382: Keyword arguments randomly nullified https://bugs.ruby-lang.org/issues/11382#change-53717 * Author: Milovan Zogovic * Status: Closed * Priority: Normal * Assignee: * ruby -v: 2.2.2 * Backport: ---------------------------------------- Here is the example: ~~~ class Parent def initialize(a: nil, b: nil, **properties) puts("parent: { a: #{a.inspect}, b: #{b.inspect}, properties: #{properties}") end end class Child < Parent def initialize(args={}) puts("child: #{args}") super end end require "yaml" Child.new(a: "A", **YAML.load("---\n:b: B\n:x: X")) # ok Child.new(a: "A", **YAML.load("---\n:b: B\n:xx: XX")) # bug: ":a" gets nullified ~~~ The output is: ~~~ child: {:a=>"A", :b=>"B", :x=>"X"} parent: { a: "A", b: "B", properties: {:x=>"X"} child: {:a=>"A", :b=>"B", :xx=>"XX"} parent: { a: "A", b: nil, properties: {:xx=>"XX"} ~~~ The only difference between first and second example is that the second one uses :xx as extra argument, while the first one uses :x. The bug will appear randomly based on the argument name. Also, this only happens when when the arguments are loaded from somewhere else (e.g. YAML.load). If i put `{ b: "B", xx: "XX" }` just anywhere in the code, the bug won't happen, which is extra weird. It works with ruby 2.1, and 2.0. -- https://bugs.ruby-lang.org/