Fix: named arguments expanded from double splat clash with local variable names #6378
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 #5693
When there's code like this:
the compiler transforms it to something like this (call, per call):
The problem with that approach is that this will not work correctly if the method already defined
x
ory
as local variables. This:gets expanded to:
This isn't usually a problem unless
x
is declared as a local variable withx : Type
, or if x is captured in a closure.The solution in this PR changes the expansion to be:
That way there's no clash.
(well, there could be a clash with those temp names, but variables that start with underscore are reserved for the compiler, more so ones with double underscore (this is used all over the compiler, not just here))