Open
Description
I feel like this code should work but it doesn't. Am I missing something?
from typing_extensions import assert_never
class Left1:
pass
class Left2:
pass
class Right1:
pass
class Right2:
pass
# this function should take either left1+right1, or left2+right2
def foo(pair: tuple[Left1, Right1] | tuple[Left2, Right2]) -> str:
match thing:
case (Left1(), Right1()):
return "1"
case (Left2(), Right2()):
return "2"
case _:
# at this point, we should have exhausted both possibilities in the union.
assert_never(pair)
gives
src/pairs.py:27: error: Argument 1 to "assert_never" has incompatible type "Union[Tuple[Left1, Right1], Tuple[Left2, Right2]]"; expected "NoReturn" [arg-type]