Fix mypy_mypyc crash caused by "complex" interaction #6169
Merged
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.
The type of Num.n is
complex
, though it can in practice also be anint
or afloat
, and we case on the actual type to determine whichsort of mypy ast node to use.
In #6114, promotions were disabled in
isinstance
checks, whichcaused mypy to decide that the
isinstance
checks for int and floatwon't match. Fix this by giving the value the type object instead of
complex.
Typeshed does actually annotate
n
asUnion[float, int, complex]
,but mypy simplifies that into
complex
. (It does not do thissimplification for local variables with such an annotation; see
issue #6168.)