Skip to content

Commit 503c145

Browse files
committed
Sort names for consistent diagnostics order
1 parent 4d6bdf4 commit 503c145

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

mypy/checker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2734,7 +2734,8 @@ def check_multiple_inheritance(self, typ: TypeInfo) -> None:
27342734
# Verify that inherited attributes are compatible.
27352735
mro = typ.mro[1:]
27362736
all_names = {name for base in mro for name in base.names}
2737-
for name in all_names - typ.names.keys():
2737+
for name in sorted(all_names - typ.names.keys()):
2738+
# Sort for reproducible message order.
27382739
# Attributes defined in both the type and base are skipped.
27392740
# Normal checks for attribute compatibility should catch any problems elsewhere.
27402741
if is_private(name):

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,19 +1085,18 @@ class B(Generic[T]):
10851085
def fn(self, t: T) -> None: ...
10861086

10871087
class C1(A2[str], B[str]): pass
1088-
class C2(A2[str], B[int]): pass # E: Definition of "x" in base class "A" is incompatible with definition in base class "B" \
1089-
# E: Definition of "fn" in base class "A" is incompatible with definition in base class "B"
1088+
class C2(A2[str], B[int]): pass # E: Definition of "fn" in base class "A" is incompatible with definition in base class "B" \
1089+
# E: Definition of "x" in base class "A" is incompatible with definition in base class "B"
10901090
class C3(A2[T], B[T]): pass
10911091
class C4(A2[U], B[U]): pass
1092-
class C5(A2[U], B[T]): pass # E: Definition of "x" in base class "A" is incompatible with definition in base class "B" \
1093-
# E: Definition of "fn" in base class "A" is incompatible with definition in base class "B"
1092+
class C5(A2[U], B[T]): pass # E: Definition of "fn" in base class "A" is incompatible with definition in base class "B" \
1093+
# E: Definition of "x" in base class "A" is incompatible with definition in base class "B"
10941094

10951095
class D1(A[str], B[str]): pass
1096-
class D2(A[str], B[int]): pass # E: Definition of "x" in base class "A" is incompatible with definition in base class "B" \
1097-
# E: Definition of "fn" in base class "A" is incompatible with definition in base class "B"
1096+
class D2(A[str], B[int]): pass # E: Definition of "fn" in base class "A" is incompatible with definition in base class "B" \
1097+
# E: Definition of "x" in base class "A" is incompatible with definition in base class "B"
10981098
class D3(A[T], B[T]): pass
10991099
class D4(A[U], B[U]): pass
1100-
class D5(A[U], B[T]): pass # E: Definition of "x" in base class "A" is incompatible with definition in base class "B" \
1101-
# E: Definition of "fn" in base class "A" is incompatible with definition in base class "B"
1102-
1100+
class D5(A[U], B[T]): pass # E: Definition of "fn" in base class "A" is incompatible with definition in base class "B" \
1101+
# E: Definition of "x" in base class "A" is incompatible with definition in base class "B"
11031102
[builtins fixtures/tuple.pyi]

0 commit comments

Comments
 (0)