Compiler: correctly pass named arguments for previous_def and super #9834
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.
Fixes https://forum.crystal-lang.org/t/i-may-have-found-a-bug-with-previous-def-but-not-sure/2624/2
The way the compiler handles
super
andprevious_def
without parentheses is by copying the current method's arguments to the call. So for example:gets expanded to:
The logic also took into account splats. This:
was expanded to:
However, arguments past the splat were passed as regular arguments. So this:
was incorrectly expanded to:
which wouldn't compile, unless
z
had a default value (it does in the bug report).This PR changes the above expansion to be: