Skip to content

Commit e77b8a5

Browse files
committed
And property/property override with typevar
1 parent 66a5148 commit e77b8a5

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

test-data/unit/check-generic-subtyping.test

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,6 @@ class B(A[str]):
10811081
class GoodPropertyOverride(A[str]):
10821082
@property
10831083
def member(self) -> str: ...
1084-
10851084
@member.setter
10861085
def member(self, val: str): ...
10871086

@@ -1092,7 +1091,6 @@ class BadPropertyOverride(A[str]):
10921091
# N: Subclass: \
10931092
# N: int
10941093
def member(self) -> int: ...
1095-
10961094
@member.setter
10971095
def member(self, val: int): ...
10981096

@@ -1103,7 +1101,47 @@ class BadGenericPropertyOverride(A[str], Generic[T]):
11031101
# N: Subclass: \
11041102
# N: T
11051103
def member(self) -> T: ...
1104+
@member.setter
1105+
def member(self, val: T): ...
1106+
[builtins fixtures/property.pyi]
1107+
1108+
[case testParameterizedGenericPropertyOverrideWithProperty]
1109+
from typing import TypeVar, Generic
1110+
1111+
T = TypeVar("T")
1112+
1113+
class A(Generic[T]):
1114+
@property
1115+
def member(self) -> T: ...
1116+
@member.setter
1117+
def member(self, val: T): ...
1118+
1119+
class B(A[str]):
1120+
member: str
1121+
1122+
class GoodPropertyOverride(A[str]):
1123+
@property
1124+
def member(self) -> str: ...
1125+
@member.setter
1126+
def member(self, val: str): ...
1127+
1128+
class BadPropertyOverride(A[str]):
1129+
@property # E: Signature of "member" incompatible with supertype "A" \
1130+
# N: Superclass: \
1131+
# N: str \
1132+
# N: Subclass: \
1133+
# N: int
1134+
def member(self) -> int: ...
1135+
@member.setter
1136+
def member(self, val: int): ...
11061137

1138+
class BadGenericPropertyOverride(A[str], Generic[T]):
1139+
@property # E: Signature of "member" incompatible with supertype "A" \
1140+
# N: Superclass: \
1141+
# N: str \
1142+
# N: Subclass: \
1143+
# N: T
1144+
def member(self) -> T: ...
11071145
@member.setter
11081146
def member(self, val: T): ...
11091147
[builtins fixtures/property.pyi]
@@ -1118,14 +1156,12 @@ class A:
11181156
class GoodPropertyOverride(A):
11191157
@property
11201158
def member(self) -> "GoodPropertyOverride": ...
1121-
11221159
@member.setter
11231160
def member(self, val: "GoodPropertyOverride"): ...
11241161

11251162
class GoodPropertyOverrideSelf(A):
11261163
@property
11271164
def member(self) -> Self: ...
1128-
11291165
@member.setter
11301166
def member(self, val: Self): ...
11311167
[builtins fixtures/property.pyi]
@@ -1146,7 +1182,6 @@ class B(A["B"]):
11461182
class GoodPropertyOverride(A["GoodPropertyOverride"]):
11471183
@property
11481184
def member(self) -> Self: ...
1149-
11501185
@member.setter
11511186
def member(self, val: Self): ...
11521187
[builtins fixtures/property.pyi]

0 commit comments

Comments
 (0)