Skip to content

Commit 35428bb

Browse files
Merge branch 'cleanDistributeTuple' of https://github.com/VallinZ/mypy into cleanDistributeTuple
2 parents d9a0a19 + 33de4d2 commit 35428bb

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

test-data/unit/check-tuples.test

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,46 @@ class A: pass
524524
class B: pass
525525
[builtins fixtures/tuple.pyi]
526526

527+
# ----------------------------------------------------------------------------
528+
# Union-in-Tuple distribution
529+
# ----------------------------------------------------------------------------
530+
531+
[case testTupleUnionDistributionSuccess]
532+
from typing import Tuple, Optional, Union
533+
534+
def f1(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, float], Tuple[float, None]]:
535+
return x
536+
537+
def f2(x: Tuple[Union[int, str], float]) -> Union[Tuple[int, float], Tuple[str, float]]:
538+
return x
539+
540+
def f3(x: Tuple[int, Union[str, None]]) -> Union[Tuple[int, str], Tuple[int, None]]:
541+
return x
542+
543+
def f4(x: Tuple[Union[int, float]]) -> Union[Tuple[int], Tuple[float]]:
544+
return x
545+
546+
def f5(x: Tuple[Union[int, str], Union[bool, None]]) -> Union[
547+
Tuple[int, bool],
548+
Tuple[int, None],
549+
Tuple[str, bool],
550+
Tuple[str, None],
551+
]:
552+
return x
553+
554+
[builtins fixtures/tuple.pyi]
555+
556+
[case testTupleUnionDistributionFail]
557+
from typing import Tuple, Optional, Union
558+
559+
def g1(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, float], Tuple[str, float]]:
560+
return x # E: Incompatible return value type (got "Tuple[float, Optional[float]]", expected "Union[Tuple[float, float], Tuple[str, float]]")
561+
562+
def g2(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, str], Tuple[float, None]]:
563+
return x # E: Incompatible return value type (got "Tuple[float, Optional[float]]", expected "Union[Tuple[float, str], Tuple[float, None]]")
564+
565+
[builtins fixtures/tuple.pyi]
566+
527567
[case testMultipleAssignmentWithNonTupleRvalue]
528568
a: A
529569
b: B

0 commit comments

Comments
 (0)