zverok (Victor Shepelev) wrote:
#inspect
just follows whatever #parameters
say.
But I indeed find that #parameters
return value is kinda weird for this case:
./ruby --disable-gems -e "def m(...); end; p method(:m).parameters"
[[:rest, :*], [:block, :&]]
E.g., literally, "parameter of the type :rest
, named *
, and parameter of the type :block
, named &
".
I believe that a proper return value for parameters in this case would be, probably
[[:rest], [:keyrest], [:block]]
If it would be so (and it seems reasonable), #inspect
will return #m(*, **, &)
That's not how ...
is implemented, though. It is implemented so that:
def a(...)
b(...)
end
means
ruby2_keywords def a(*args, &block)
b(*args, &block)
end
other than the local variable names. So the current behavior omitting :keyrest
makes sense. The local variable names should not be included, so the parameters
output should probably be [[:rest], [:block]]
.
This does raise a question of whether methods flagged with ruby2_keywords
should have their parameters
output reflect that. I'm not sure whether that is worth doing, but if so, we should probably replace :rest
with something like :restkw
.