Actions
Bug #16801
closedThe default Struct constructor improperly handle keyword arguments
Bug #16801:
The default Struct constructor improperly handle keyword arguments
Description
Reproduction script:
Field = Struct.new(:value) do
def initialize(value, keyword: false)
super(value)
@keyword = keyword
end
end
Field.new(1, keyword: true)
/tmp/kw.rb:8: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/tmp/kw.rb:2: warning: The called method `initialize' is defined here
This can be worked around with keyword_init: true, but I see no reason why Struct couldn't properly handle keyword arguments in it's default constructor.
I have a patch for this: https://github.com/ruby/ruby/pull/3045 however I had to modify a test that was explicitly expecting that warning, so maybe I'm missing something.
Actions