Skip to content

Comments

Do not repor trivial narrowing as a change in binder#20862

Open
ilevkivskyi wants to merge 1 commit intopython:masterfrom
ilevkivskyi:fix-redef-pop-changed
Open

Do not repor trivial narrowing as a change in binder#20862
ilevkivskyi wants to merge 1 commit intopython:masterfrom
ilevkivskyi:fix-redef-pop-changed

Conversation

@ilevkivskyi
Copy link
Member

@ilevkivskyi ilevkivskyi commented Feb 22, 2026

Fixes #20816

This makes --allow-redefinition-new ~10% faster (or maybe more if you have too many loops in your code). The idea is quite simple: there is no difference between no narrowing, and narrowing to type that is a variable declared type. This doesn't really make a difference for regular mode, IIUC because there is a "fall through", i.e. zero-iterations case, but this doesn't work with bind_all = True. As a result we used to accept every loop with an assignment in it at lest twice with --allow-redefinition-new (which includes assignment to iteration variable in for-loop).

Note that declaration_type may be None if there is a partial type, but we already track partial types in accept loop separately, so we don't need to report them as changed here as well.

@github-actions
Copy link
Contributor

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

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.

Performance impact of --allow-redefinition-new

2 participants