Python: Allow use of match
as an identifier
#19895
Open
+31,674
−29,909
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.
This previously only worked in certain circumstances. In particular, assignments such as
match[1] = ...
or even justmatch[1]
would fail to parse correctly.Fixing this turned out to be less trivial than anticipated. Consider the fact that
can either look the start of a
match
statement, or it could be a type ascription, ascribing the value ofcase(...)
(a call) to the item at index 1 ofmatch
.To fix this, then, we give
match
the identifier andmatch
the statement the same precendence in the grammar, and additionally also mark a conflict betweenmatch_statement
andprimary_expression
. This causes the conflict to be resolved dynamically, and seems to do the right thing in all cases.