Skip to content

Make new parser consistent with the old one#21377

Merged
ilevkivskyi merged 2 commits intopython:masterfrom
ilevkivskyi:fix-new-parser
Apr 30, 2026
Merged

Make new parser consistent with the old one#21377
ilevkivskyi merged 2 commits intopython:masterfrom
ilevkivskyi:fix-new-parser

Conversation

@ilevkivskyi
Copy link
Copy Markdown
Member

This fixes some issues discovered in #21331

Two things here:

  • Old parser keeps metaclass in keywords, so it is better to keep it in the new one as well
  • Old parser has right-associativity for BoolOps, so should have the new one

If we want to have the new behavior for some reason, it is possible to instead make some fixes "downstream" in semantic analysis/type-checking/etc. But, it is non-trivial, and IMO it is not a good time to change the behavior while we still have both parsers.

Note I don't add test for the metaclass change because a whole bunch of mypyc tests fails with new parser already without this PR.

cc @JukkaL

@github-actions
Copy link
Copy Markdown
Contributor

According to mypy_primer, this change doesn't affect type check results on a corpus of open source code. ✅

@ilevkivskyi ilevkivskyi merged commit ddacf23 into python:master Apr 30, 2026
24 checks passed
@ilevkivskyi ilevkivskyi deleted the fix-new-parser branch April 30, 2026 00:07
@AA-Turner
Copy link
Copy Markdown
Member

Would it be possible for this to be backported to 1.20? We're interested in using the native parser now for the perf wins. Thanks for considering!

A

JukkaL pushed a commit that referenced this pull request Apr 30, 2026
This fixes some issues discovered in
#21331

Two things here:
* Old parser keeps `metaclass` in keywords, so it is better to keep it
in the new one as well
* Old parser has right-associativity for BoolOps, so should have the new
one

If we want to have the new behavior for some reason, it is possible to
instead make some fixes "downstream" in semantic
analysis/type-checking/etc. _But_, it is non-trivial, and IMO it is not
a good time to change the behavior while we still have both parsers.

Note I don't add test for the metaclass change because a whole bunch of
mypyc tests fails with new parser already without this PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants