Issue #11771 has been updated by Yukihiro Matsumoto.


I don't say anything about 3.0 for now.
But things are more complicated than you imagine.

Matz.


----------------------------------------
Bug #11771: unable to pass keyargs to []=
https://bugs.ruby-lang.org/issues/11771#change-55320

* Author: bug hit
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: 2.2.3
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
```ruby
module Foo
  def self.[]=(key, val, option: nil)

  end
end

Foo[:key] = 1 # ok


Foo[:key, option: 1] = 1 # wrong number of arguments (3 for 2)

```

if you declare the []= params using *

```ruby

module Bar
  def self.[]=(*args)
    p args
  end
end

Bar[:key, option: 1] = 1 # args: [:key, {:option=>1}, 1]

```

the args end up [:key, {:option=>1}, 1] which seems wrong since the keyargs hash is supposed to be last




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