Skip to content

Commit a008448

Browse files
committed
allow more dups
1 parent 3135c0f commit a008448

File tree

2 files changed

+46
-4
lines changed

2 files changed

+46
-4
lines changed

mypy/messages.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,9 @@ def signature_incompatible_with_supertype(
11571157
# note: def f(self) -> str
11581158
# note: Subclass:
11591159
# note: def f(self, x: str) -> None
1160-
self.note("Superclass:", context, offset=ALIGN_OFFSET + OFFSET, code=code)
1160+
self.note(
1161+
"Superclass:", context, offset=ALIGN_OFFSET + OFFSET, allow_dups=ALLOW_DUPS, code=code
1162+
)
11611163
if isinstance(original, (CallableType, Overloaded)):
11621164
self.pretty_callable_or_overload(
11631165
original,
@@ -1168,9 +1170,17 @@ def signature_incompatible_with_supertype(
11681170
code=code,
11691171
)
11701172
else:
1171-
self.note(original_str, context, offset=ALIGN_OFFSET + 2 * OFFSET, code=code)
1173+
self.note(
1174+
original_str,
1175+
context,
1176+
offset=ALIGN_OFFSET + 2 * OFFSET,
1177+
allow_dups=ALLOW_DUPS,
1178+
code=code,
1179+
)
11721180

1173-
self.note("Subclass:", context, offset=ALIGN_OFFSET + OFFSET, code=code)
1181+
self.note(
1182+
"Subclass:", context, offset=ALIGN_OFFSET + OFFSET, allow_dups=ALLOW_DUPS, code=code
1183+
)
11741184
if isinstance(override, (CallableType, Overloaded)):
11751185
self.pretty_callable_or_overload(
11761186
override,
@@ -1181,7 +1191,13 @@ def signature_incompatible_with_supertype(
11811191
code=code,
11821192
)
11831193
else:
1184-
self.note(override_str, context, offset=ALIGN_OFFSET + 2 * OFFSET, code=code)
1194+
self.note(
1195+
override_str,
1196+
context,
1197+
offset=ALIGN_OFFSET + 2 * OFFSET,
1198+
allow_dups=ALLOW_DUPS,
1199+
code=code,
1200+
)
11851201

11861202
def pretty_callable_or_overload(
11871203
self,

test-data/unit/check-classes.test

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,32 @@ class B(A):
588588
@dec
589589
def h(self) -> str: pass
590590

591+
[case testOverrideIncompatibleWithMultipleSupertypes]
592+
class A:
593+
def f(self, *, a: int) -> None:
594+
return
595+
596+
class B(A):
597+
def f(self, *, b: int) -> None: # E: Signature of "f" incompatible with supertype "A" \
598+
# N: Superclass: \
599+
# N: def f(self, *, a: int) -> None \
600+
# N: Subclass: \
601+
# N: def f(self, *, b: int) -> None
602+
return
603+
604+
class C(B):
605+
def f(self, *, c: int) -> None: # E: Signature of "f" incompatible with supertype "B" \
606+
# N: Superclass: \
607+
# N: def f(self, *, b: int) -> None \
608+
# N: Subclass: \
609+
# N: def f(self, *, c: int) -> None \
610+
# E: Signature of "f" incompatible with supertype "A" \
611+
# N: Superclass: \
612+
# N: def f(self, *, a: int) -> None \
613+
# N: Subclass: \
614+
# N: def f(self, *, c: int) -> None
615+
return
616+
591617
[case testOverrideStaticMethodWithStaticMethod]
592618
class A:
593619
@staticmethod

0 commit comments

Comments
 (0)