Fix multi-arity method binding.#5455
Merged
headius merged 2 commits intojruby:masterfrom Nov 19, 2018
Merged
Conversation
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.
d054c1a to
c025bbb
Compare
Member
Author
|
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.