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
fromtypingimportGeneric, TypeVarT=TypeVar('T')
G=TypeVar('G', bound='Y')
classX(Generic[T]): passclassY: pass# Consider this function:deff(a: X[T] |G) ->X[T] |G:
ifisinstance(a, X):
reveal_type(a) # X[T`-1]returnaifisinstance(a, Y):
reveal_type(a) # G`-2returnaprint() # error: unreachable. It is ok, because all possibilities checked.# The same function, but if's swappeddefg(a: X[T] |G) ->X[T] |G: # error: Missing return statementifisinstance(a, Y):
reveal_type(a) # Yreturna# error: Incompatible return value type (got "Y", expected "Union[X[T], G]")ifisinstance(a, X):
reveal_type(a) # X[T`-1]returnaprint() # no "error: unreachable", because it is reachable and mypy complains about "missing return"# I expect to get no errors here, because it isnt reachable
Expected Behavior
First function is fine. I expect to get no errors in second function. Also first reveal_type in second function is IMO invalid, it should be G.
Your Environment
Mypy version used: mypy 0.971 (compiled: yes)
Mypy command-line flags: none
Mypy configuration options from mypy.ini (and other config files):
Consider this example:
Expected Behavior
First function is fine. I expect to get no errors in second function. Also first
reveal_type
in second function is IMO invalid, it should beG
.Your Environment
mypy 0.971 (compiled: yes)
mypy.ini
(and other config files):PS: pls give better title to this issue, idk how to properly describe this issue.
The text was updated successfully, but these errors were encountered: