@@ -801,6 +801,57 @@ def error_in_variadic(exc: Tuple[int, ...]) -> None:
801801
802802[builtins fixtures/tuple.pyi]
803803
804+ [case testExceptWithMultipleTypes5]
805+ from typing import Tuple, Type, Union
806+
807+ class E1(BaseException): pass
808+ class E2(BaseException): pass
809+ class E3(BaseException): pass
810+
811+ def union_in_variadic(exc: Tuple[Union[Type[E1], Type[E2]], ...]) -> None:
812+ try:
813+ pass
814+ except exc as e:
815+ reveal_type(e) # N: Revealed type is "Union[__main__.E1, __main__.E2]"
816+
817+ def nested_union_in_variadic(exc: Tuple[Union[Type[E1], Union[Type[E2], Type[E3]]], ...]) -> None:
818+ try:
819+ pass
820+ except exc as e:
821+ reveal_type(e) # N: Revealed type is "Union[__main__.E1, __main__.E2, __main__.E3]"
822+
823+ def union_in_tuple(exc: Tuple[Union[Type[E1], Type[E2]], Type[E3]]) -> None:
824+ try:
825+ pass
826+ except exc as e:
827+ reveal_type(e) # N: Revealed type is "Union[__main__.E1, __main__.E2, __main__.E3]"
828+
829+ def error_in_variadic_union(exc: Tuple[Union[Type[E1], int], ...]) -> None:
830+ try:
831+ pass
832+ except exc as e: # E: Exception type must be derived from BaseException (or be a tuple of exception classes)
833+ pass
834+
835+ def error_in_variadic_nested_union(exc: Tuple[Union[Type[E1], Union[Type[E2], int]], ...]) -> None:
836+ try:
837+ pass
838+ except exc as e: # E: Exception type must be derived from BaseException (or be a tuple of exception classes)
839+ pass
840+
841+ def error_in_tuple_inside_variadic_nested_union(exc: Tuple[Union[Type[E1], Union[Type[E2], Tuple[Type[E3]]]], ...]) -> None:
842+ try:
843+ pass
844+ except exc as e: # E: Exception type must be derived from BaseException (or be a tuple of exception classes)
845+ pass
846+
847+ def error_in_tuple_union(exc: Tuple[Union[Type[E1], Type[E2]], Union[Type[E3], int]]) -> None:
848+ try:
849+ pass
850+ except exc as e: # E: Exception type must be derived from BaseException (or be a tuple of exception classes)
851+ pass
852+
853+ [builtins fixtures/tuple.pyi]
854+
804855[case testExceptWithAnyTypes]
805856from typing import Any
806857
0 commit comments