Actions
Bug #17596
closedCalling parameters on `new` method results in :rest and -1 arity
Description
Consider the following class:
class Testing
def initialize(a, b, c)
# ...
end
end
...and the following call:
m = Testing.method(:new)
p arity: m.arity, params: m.parameters
Expected
{ arity: 3, params: [[:req, :a], [:req, :b], [:req, :c]] }
Actual
{ arity: -1, params: [[:rest]] }
This is confusing to me as I would expect to be able to see the parameters of the new
method like this. The same applies for `initialize.
I was experimenting with pattern matching interfaces and dynamically defining class constructor definitions as such:
def deconstruct
method(:new).parameters.map { public_send(_1.last) }
end
While this case is not 100% safe for all initializers I had expected it to work for testing and was surprised when it did not.
I've tested and confirmed this behavior back to 2.5 and tested no further back
Actions
Like0
Like0Like0Like0Like0