From: matz@... Date: 2015-12-07T17:03:03+00:00 Subject: [ruby-core:71914] [Ruby trunk - Bug #11771] unable to pass keyargs to []= 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/