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

Conversation

Projects
None yet
1 participant
@headius
Copy link
Member

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

Fix multi-arity method binding.
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 headius:fix_multi_arity_binding branch from d054c1a to c025bbb Nov 19, 2018

@headius

This comment has been minimized.

Copy link
Member Author

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

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details

@headius headius deleted the headius:fix_multi_arity_binding branch Nov 19, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.