@@ -2207,3 +2207,29 @@ def bar(x: Union[List[str], List[int], None]) -> None:
2207
2207
assert isinstance(x, list)
2208
2208
reveal_type(x) # E: Revealed type is 'Union[builtins.list[builtins.str], builtins.list[builtins.int]]'
2209
2209
[builtins fixtures/isinstancelist.pyi]
2210
+
2211
+ [case testIsInstanceWithStarExpression]
2212
+ from typing import Union, List, Tuple
2213
+
2214
+ def f(var: Union[List[str], Tuple[str, str], str]) -> None:
2215
+ reveal_type(var) # E: Revealed type is 'Union[builtins.list[builtins.str], Tuple[builtins.str, builtins.str], builtins.str]'
2216
+ if isinstance(var, (list, *(str, int))):
2217
+ reveal_type(var) # E: Revealed type is 'Union[builtins.list[builtins.str], builtins.str]'
2218
+ [builtins fixtures/isinstancelist.pyi]
2219
+
2220
+ [case testIsInstanceWithStarExpressionAndVariable]
2221
+ from typing import Union
2222
+
2223
+ def f(var: Union[int, str]) -> None:
2224
+ reveal_type(var) # E: Revealed type is 'Union[builtins.int, builtins.str]'
2225
+ some_types = (str, tuple)
2226
+ another_type = list
2227
+ if isinstance(var, (*some_types, another_type)):
2228
+ reveal_type(var) # E: Revealed type is 'builtins.str'
2229
+ [builtins fixtures/isinstancelist.pyi]
2230
+
2231
+ [case testIsInstanceWithWrongStarExpression]
2232
+ var = 'some string'
2233
+ if isinstance(var, *(str, int)): # E: Too many arguments for "isinstance"
2234
+ pass
2235
+ [builtins fixtures/isinstancelist.pyi]
0 commit comments