Skip to content

Fix multi-arity method binding.#5455

Merged
headius merged 2 commits intojruby:masterfrom
headius:fix_multi_arity_binding
Nov 19, 2018
Merged

Fix multi-arity method binding.#5455
headius merged 2 commits intojruby:masterfrom
headius:fix_multi_arity_binding

Conversation

@headius
Copy link
Member

@headius headius commented Nov 19, 2018

We have apparently not been binding multi-arity rest methods well
for some time; the logic to look for "hasVarargs" was not using
the correct class.getName() for an IRubyObject[], resulting in
any variable-arity-or-rest methods always getting routed to the
rest path, because the min/max logic breaks without hasVarargs.

This could regress easily without tests, but I'm not sure of the best way to test that all this generated code is working right.

This was discovered while investigating #5448, which weirdly was caused by this bug to go down a rest path, and then via JavaMethodN.call re-route to a specific-arity version that had a bug.

@headius headius added this to the JRuby 9.2.5.0 milestone Nov 19, 2018
We have apparently not been binding multi-arity rest methods well
for some time; the logic to look for "hasVarargs" was not using
the correct class.getName() for an IRubyObject[], resulting in
any variable-arity-or-rest methods always getting routed to the
rest path, because the min/max logic breaks without hasVarargs.
@headius headius force-pushed the fix_multi_arity_binding branch from d054c1a to c025bbb Compare November 19, 2018 17:35
@headius
Copy link
Member Author

headius commented Nov 19, 2018

Pushed an additional commit that fixes bugs that cropped up in RubyStruct keyword_init handling. Because specific arities started getting routed to the correct places, they hit RubyStruct initialize methods that did not have proper error handling in place for kwargs-init without kwargs.

@headius headius merged commit daee146 into jruby:master Nov 19, 2018
@headius headius deleted the fix_multi_arity_binding branch November 19, 2018 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant