RFC: fix #18650, parsing generator expressions containing macro calls #22943
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.
Previously
@mac x for i = ...
always parsed as a macro call wrapping afor
loop, except inside square brackets (giving a comprehension). Now it will parse as a generator when it occurs inside a function call argument list.This is very lightly breaking, since (1) it's very unusual to write a for loop inside an argument list, (2) most (all?) forms of this either gave a syntax error before, or will give a syntax error after this change.
I'm a bit on the fence about this. The new parsing is more useful, but means that in
f(<something>)
vs.(<something>)
, the<something>
can parse differently.