Skip to content

Commit aca05c7

Browse files
committed
Add union destructuring test
1 parent b0ce683 commit aca05c7

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

test-data/unit/check-isinstance.test

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,6 +1443,28 @@ else:
14431443
[builtins fixtures/isinstancelist.pyi]
14441444

14451445

1446+
[case testIssubclasDestructuringUnions]
1447+
from typing import Union, List, Tuple, Dict, Type
1448+
def f(x: Union[Type[int], Type[str], Type[List]]) -> None:
1449+
if issubclass(x, (str, (int,))):
1450+
reveal_type(x) # E: Revealed type is 'Union[Type[builtins.int], Type[builtins.str]]'
1451+
reveal_type(x()) # E: Revealed type is 'Union[builtins.int, builtins.str]'
1452+
x()[1] # E: Value of type "Union[int, str]" is not indexable
1453+
else:
1454+
reveal_type(x) # E: Revealed type is 'Type[builtins.list]'
1455+
reveal_type(x()) # E: Revealed type is 'builtins.list[<uninhabited>]'
1456+
x()[1]
1457+
reveal_type(x) # E: Revealed type is 'Union[Type[builtins.int], Type[builtins.str], Type[builtins.list]]'
1458+
reveal_type(x()) # E: Revealed type is 'Union[builtins.int, builtins.str, builtins.list[<uninhabited>]]'
1459+
if issubclass(x, (str, (list,))):
1460+
reveal_type(x) # E: Revealed type is 'Union[Type[builtins.str], Type[builtins.list[Any]]]'
1461+
reveal_type(x()) # E: Revealed type is 'Union[builtins.str, builtins.list[<uninhabited>]]'
1462+
x()[1]
1463+
reveal_type(x) # E: Revealed type is 'Union[Type[builtins.int], Type[builtins.str], Type[builtins.list[Any]]]'
1464+
reveal_type(x()) # E: Revealed type is 'Union[builtins.int, builtins.str, builtins.list[<uninhabited>]]'
1465+
[builtins fixtures/isinstancelist.pyi]
1466+
1467+
14461468
[case testIssubclass]
14471469
from typing import Type, ClassVar
14481470

typeshed

Submodule typeshed updated 53 files

0 commit comments

Comments
 (0)