Issue #12104 has been updated by Brian Underwood.


This seems to also happen when trying to use a options Hash as the second argument:

~~~
2.3.0 :009 > p = Proc.new {|nodes, options = {}| puts nodes.inspect }
 => #<Proc:0x007fa52b13b348@(irb):9>
2.3.0 :010 > p.call([])
nil
 => nil
2.3.0 :011 > p.call([], match_array: true)
[]
~~~

----------------------------------------
Bug #12104: Procs keyword arguments affect value of previous argument
https://bugs.ruby-lang.org/issues/12104#change-57099

* Author: Brian Underwood
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: Tested in 2.3.0 and 2.2.3
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
This seems like a bug to me:

~~~
2.3.0 :001 > p = Proc.new {|nodes, match_array: false| puts nodes.inspect }
 => #<Proc:0x007fa52c0659e0@(irb):1>
2.3.0 :002 > p.call([])
nil
 => nil
2.3.0 :003 >  p.call([], match_array: true)
[]
 => nil
~~~

When I try the same thing in a method I get the behavior I would expect:

~~~
2.3.0 :004 > def foo(nodes, match_array: false)
2.3.0 :005?>   puts nodes.inspect
2.3.0 :006?>   end
 => :foo
2.3.0 :007 > foo([])
[]
 => nil
2.3.0 :008 > foo([], match_array: true)
[]
~~~




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>