@@ -134,16 +134,41 @@ def main(a: object) -> None:
134134 reveal_type(a) # N: Revealed type is "Union[builtins.int, builtins.str]"
135135[builtins fixtures/tuple.pyi]
136136
137- [case testTypeIsUnionOfGenerics ]
138- from typing import List, Union
137+ [case testTypeIsUnionWithGeneric ]
138+ from typing import Any, List, Sequence , Union
139139from typing_extensions import TypeIs
140- def is_foo(a: Union[List[int], List[str]]) -> TypeIs[List[str]]: pass
141- def main(a: Union[List[int], List[str]]) -> None:
142- if is_foo(a):
140+
141+ def is_int_list(a: object) -> TypeIs[List[int]]: pass
142+ def is_int_seq(a: object) -> TypeIs[Sequence[int]]: pass
143+ def is_seq(a: object) -> TypeIs[Sequence[Any]]: pass
144+
145+ def f1(a: Union[List[int], List[str]]) -> None:
146+ if is_int_list(a):
147+ reveal_type(a) # N: Revealed type is "builtins.list[builtins.int]"
148+ else:
143149 reveal_type(a) # N: Revealed type is "builtins.list[builtins.str]"
150+ reveal_type(a) # N: Revealed type is "Union[builtins.list[builtins.int], builtins.list[builtins.str]]"
151+
152+ def f2(a: Union[List[int], int]) -> None:
153+ if is_int_list(a):
154+ reveal_type(a) # N: Revealed type is "builtins.list[builtins.int]"
144155 else:
156+ reveal_type(a) # N: Revealed type is "builtins.int"
157+ reveal_type(a) # N: Revealed type is "Union[builtins.list[builtins.int], builtins.int]"
158+
159+ def f3(a: Union[List[bool], List[str]]) -> None:
160+ if is_int_seq(a):
161+ reveal_type(a) # N: Revealed type is "builtins.list[builtins.bool]"
162+ else:
163+ reveal_type(a) # N: Revealed type is "builtins.list[builtins.str]"
164+ reveal_type(a) # N: Revealed type is "Union[builtins.list[builtins.bool], builtins.list[builtins.str]]"
165+
166+ def f4(a: Union[List[int], int]) -> None:
167+ if is_seq(a):
145168 reveal_type(a) # N: Revealed type is "builtins.list[builtins.int]"
146- reveal_type(a) # N: Revealed type is "Union[builtins.list[builtins.int], builtins.list[builtins.str]]"
169+ else:
170+ reveal_type(a) # N: Revealed type is "builtins.int"
171+ reveal_type(a) # N: Revealed type is "Union[builtins.list[builtins.int], builtins.int]"
147172[builtins fixtures/tuple.pyi]
148173
149174[case testTypeIsNonzeroFloat]
0 commit comments