From: jean.boussier@... Date: 2020-04-20T09:59:50+00:00 Subject: [ruby-core:97976] [Ruby master Bug#16801] The default Struct constructor improperly handle keyword arguments Issue #16801 has been reported by byroot (Jean Boussier). ---------------------------------------- Bug #16801: The default Struct constructor improperly handle keyword arguments https://bugs.ruby-lang.org/issues/16801 * Author: byroot (Jean Boussier) * Status: Open * Priority: Normal * ruby -v: ruby 2.7.1p83 * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Reproduction script: ```ruby 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. -- https://bugs.ruby-lang.org/ Unsubscribe: