Actions
Bug #17596
closedCalling parameters on `new` method results in :rest and -1 arity
Bug #17596:
Calling 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