@@ -1607,6 +1607,83 @@ t6: Tuple[int, int, int, int, int, int, int, int, int, int, int, int] = (1, 2, 3
1607
1607
1608
1608
[builtins fixtures/tuple.pyi]
1609
1609
1610
+ [case testPropertyLongTupleReturnTypeMismatchUnion]
1611
+ from typing import Tuple, Union
1612
+ class A:
1613
+ a: str
1614
+ b: str
1615
+ c: str
1616
+ d: str
1617
+ e: str
1618
+ f: str
1619
+ g: Union[str, int]
1620
+ h: Union[str, float]
1621
+ i: Union[str, None]
1622
+ j: Union[str, None]
1623
+ k: Union[str, None]
1624
+ l: Union[str, None]
1625
+
1626
+ @property
1627
+ def x(self) -> Tuple[str, str, str, str, str, str, str, str, str, str, str, str]:
1628
+ return (
1629
+ self.a,
1630
+ self.b,
1631
+ self.c,
1632
+ self.d,
1633
+ self.e,
1634
+ self.f,
1635
+ self.g,
1636
+ self.h,
1637
+ self.i,
1638
+ self.j,
1639
+ self.k,
1640
+ self.l,
1641
+ )
1642
+ [out]
1643
+ main:18: error: Incompatible return value type (6 tuple items are incompatible; 3 items are omitted)
1644
+ main:18: note: Expression tuple item 6 has type "Union[str, int]"; "str" expected;
1645
+ main:18: note: Expression tuple item 7 has type "Union[str, float]"; "str" expected;
1646
+ main:18: note: Expression tuple item 8 has type "Optional[str]"; "str" expected;
1647
+ [builtins fixtures/property.pyi]
1648
+
1649
+ [case testPropertyLongTupleReturnTypeMismatchUnionWiderExpected]
1650
+ from typing import Tuple, Union
1651
+ class A:
1652
+ a: str
1653
+ b: str
1654
+ c: str
1655
+ d: str
1656
+ e: str
1657
+ f: str
1658
+ g: str
1659
+ h: str
1660
+ i: str
1661
+ j: str
1662
+ k: str
1663
+ l: Union[float, int]
1664
+
1665
+ @property
1666
+ def x(self) -> Tuple[Union[str, int], Union[str, float], int, Union[str, None], Union[str, None], Union[str, None], str, str, str, str, str, str]:
1667
+ return (
1668
+ self.a,
1669
+ self.b,
1670
+ self.c,
1671
+ self.d,
1672
+ self.e,
1673
+ self.f,
1674
+ self.g,
1675
+ self.h,
1676
+ self.i,
1677
+ self.j,
1678
+ self.k,
1679
+ self.l,
1680
+ )
1681
+ [out]
1682
+ main:18: error: Incompatible return value type (2 tuple items are incompatible)
1683
+ main:18: note: Expression tuple item 2 has type "str"; "int" expected;
1684
+ main:18: note: Expression tuple item 11 has type "Union[float, int]"; "str" expected;
1685
+ [builtins fixtures/property.pyi]
1686
+
1610
1687
[case testTupleWithStarExpr]
1611
1688
from typing import Tuple, List
1612
1689
points = (1, "test") # type: Tuple[int, str]
0 commit comments