Forum: Ruby-core named params don't always capture passed named args

88144e3f7b9d7e3435a41492887b3999?d=identicon&s=25 Mean Login (mean_l)
on 2014-08-17 05:58
(Received via mailing list)
Issue #10142 has been updated by First Last.


Koichi Sasada wrote:
> (2014/08/16 12:49), meanlogin@gmail.com wrote:
>  > this example is particularly illustrative, it's absurd to complain about
missing keyword b when the method is being passed keyword b
>
>  What kind of message do you expect?
>

I already stated what I think would make more sense:

before keyword args are packaged into a hash which is bound to a
mandatory param, actual first class keyword params should get a chance
to bind to/consume them

in this specific example, key arg b would be bound to key param b, and
the remaining key arg c would be put into a hash which would be bound to
mandatory param a

I should underscore that I first discovered this issue in a real
scenario, I forgot to pass one of several mandatory args to a method
(first example) and instead of raising a helpful arg error it unbound an
optional key arg x from key param x and bound it to the mandatory param.

Current behavior is surprising, illogical and promotes subtle bugs.

----------------------------------------
Bug #10142: named params don't always capture passed named args
https://bugs.ruby-lang.org/issues/10142#change-48382

* Author: First Last
* Status: Rejected
* Priority: Normal
* Assignee:
* Category:
* Target version:
* ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
~~~ruby
irb(main):007:0> def foo(a, b: nil); [a, b] end
:foo
irb(main):008:0> foo b: 1
[
  [0] {
    :b => 1
  },
  [1] nil
]
~~~
______________________________

would be better if this raised
308cbef6e86dfc49cce3b2d4cf42aedc?d=identicon&s=25 SASADA Koichi (Guest)
on 2014-08-17 06:04
(Received via mailing list)
(2014/08/17 12:57), meanlogin@gmail.com wrote:
> I already stated what I think would make more sense:

I understand that you are surprising.
I agree about this surprize.

But I can't find any concrete proposal.
This topic is locked and can not be replied to.