Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix multi-arity method binding. #5455

Merged
merged 2 commits into from Nov 19, 2018
Merged

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
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.

None yet

1 participant