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