From: meanlogin@... Date: 2014-08-17T03:57:22+00:00 Subject: [ruby-core:64427] [ruby-trunk - Bug #10142] named params don't always capture passed named args 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 -- https://bugs.ruby-lang.org/