Actions
Feature #16456
closedRuby 2.7 argument delegation (...) should be its own kind of parameter in Method#parameters
Feature #16456:
Ruby 2.7 argument delegation (...) should be its own kind of parameter in Method#parameters
Description
A method defined with ... as its parameter list is equivalent to one defined with *args, &blk, according to Method#parameters.
def foo(...); end
p method(:foo).parameters
# => [[:rest, :*], [:block, :&]]
Even in Ruby 2.7, ... and *args, &blk are not quite equivalent as the latter may produce a warning where the former does not. In Ruby 3.0 and beyond, ... and *args, &blk will have a substantial semantic difference. Due to this, I don't consider the current behaviour of Method#parameters particularly ideal when dealing with methods using this new syntax.
If the goal of ... is to be a "delegate everything" operator, even when parameter passing is changed like in Ruby 3.0, I would propose that Method#parameters considers it a unique type of parameter. For example:
def foo(...); end
p method(:foo).parameters
# => [[:delegate, :"..."]]
Actions