Issue #11048 has been updated by bug hit.


Yukihiro Matsumoto wrote:
> so if you have any real-world use case that require keyword argument tolerance, just tell me.

The way I discovered this, as far as I remember, is:
I encountered a method I needed to call that yielded keyword args
In my case I only cared about one arg so I passed a block taking one keyarg, expecting it to just quietly drop the others as with positional args
Instead it raised


----------------------------------------
Bug #11048: blocks raise on missing and extra keyword args
https://bugs.ruby-lang.org/issues/11048#change-52892

* Author: bug hit
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
blocks intentionally tolerate arity mismatches

```
irb(main):001:0> proc{|a, b| [a, b]}.(1)
[
  [0] 1,
  [1] nil
]

irb(main):003:0> proc{|a, b|[a, b]}.(1, 2, 3)
[
  [0] 1,
  [1] 2
]


```

so why not missing keyword args?

```
irb(main):002:0> proc{|a:, b:|[a, b]}.(a: 1)
ArgumentError: missing keyword: b


irb(main):004:0> proc{|a:, b:|[a, b]}.(a: 1, b: 1, c: 1)
ArgumentError: unknown keyword: c

```




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