You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix crash with malformed TypedDicts and disllow-any-expr (#13963)
Fixes#13066
During the semanal phase, mypy opts to ignore and skip processing any
malformed or illegal statements inside of a TypedDict class definition,
such as method definitions.
Skipping semanal analysis on these statements can cause any number of
odd downstream problems: the type-checking phase assumes that all
semanal-only semantic constructs (e.g. FakeInfo) have been purged by
this point, and so can crash at any point once this precondition has
been violated.
This diff opts to solve this problem by filtering down the list of
statements so we keep only the ones we know are legal within a TypedDict
definition.
The other possible solution to this problem is to modify mypy so we skip
checking TypedDict class bodies entirely during type checking and
fine-grained deps analysis. Doing this would also let address #10007 and
supersede my other diff #13732.
I decided against doing this for now because:
1. I wasn't sure if this was actually safe, especially in the
fine-grained deps phase and for mypyc.
2. I think no matter what, the semanal phase should not leak
semanal-only types: relaxing this postcondition would make it harder to
reason about mypy. So, we'd probably want to make this change regardless
of what we do in the later phases.
0 commit comments