- Are you reporting a bug, or opening a feature request?: bug
- What is the actual behavior/output?
Given the following (cut down) loop code, mypy identifies incorrectly that the print statement cannot be reached.
last = None
reveal_type(last) # Revealed type is 'None'
for val in range(10):
reveal_type(last) # Revealed type is 'None'
if last is not None and last < 2:
print("apparently unreachable")
reveal_type(last) # no output
reveal_type(last) # Revealed type is 'None'
last = val
reveal_type(last) # Revealed type is 'builtins.int*'
My original code also used the value of last within the conditional; that was also warned about being not evaluated.
Notably, running mypy --no-warn-unreachable still doesn't give any output for the reveal_type in the if branch.
Happily this issue can be worked around by adding an explicit Optional[int] annotation to last.
- What is the behavior/output you expect?
I think mypy should consider last to be Optional[int] in the early part of the loop, rather than just being None. That would fix the unreachable warning as well as potentially being more correct.
Within the if last is not None branch, last should be of type int.
- What are the versions of mypy and Python you are using? mypy 0.770, Python 3.5.2
Do you see the same issue after installing mypy from Git master? yes (tested at 125728a)
- What are the mypy flags you are using?
--warn-unreachable
Given the following (cut down) loop code, mypy identifies incorrectly that the print statement cannot be reached.
My original code also used the value of
lastwithin the conditional; that was also warned about being not evaluated.Notably, running
mypy --no-warn-unreachablestill doesn't give any output for thereveal_typein theifbranch.Happily this issue can be worked around by adding an explicit
Optional[int]annotation tolast.I think
mypyshould considerlastto beOptional[int]in the early part of the loop, rather than just beingNone. That would fix the unreachable warning as well as potentially being more correct.Within the
if last is not Nonebranch,lastshould be of typeint.Do you see the same issue after installing mypy from Git master? yes (tested at 125728a)
--warn-unreachable