Skip to content

Commit c1c15b2

Browse files
committed
Amend failing test, use _cls again for error context and use appropriate code
1 parent e5ac593 commit c1c15b2

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

mypy/plugins/dataclasses.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,8 @@ def _add_dunder_hash(self, is_hashable: bool) -> None:
472472
self._api.fail(
473473
"Incompatible override of '__hash__': dataclasses without"
474474
" 'frozen' or 'unsafe_hash' have '__hash__' set to None",
475-
self._reason,
475+
self._cls,
476+
code=errorcodes.OVERRIDE,
476477
)
477478
add_attribute_to_class(
478479
self._api, self._cls, "__hash__", typ=NoneType(), is_classvar=True

test-data/unit/check-dataclasses.test

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,9 @@ from dataclasses import dataclass
259259
class FrozenBase:
260260
pass
261261

262-
@dataclass # E: Incompatible override of '__hash__': dataclasses without 'frozen' or 'unsafe_hash' have '__hash__' set to None
263-
class BadNormalDerived(FrozenBase): # E: Non-frozen dataclass cannot inherit from a frozen dataclass
262+
@dataclass
263+
class BadNormalDerived(FrozenBase): # E: Incompatible override of '__hash__': dataclasses without 'frozen' or 'unsafe_hash' have '__hash__' set to None \
264+
# E: Non-frozen dataclass cannot inherit from a frozen dataclass
264265
pass
265266

266267
@dataclass
@@ -282,6 +283,11 @@ class BadFrozenDerived(NormalBase): # E: Signature of "__hash__" incompatible w
282283

283284

284285

286+
287+
288+
289+
290+
285291
[builtins fixtures/dataclasses.pyi]
286292

287293
[case testDataclassesFields]
@@ -2639,8 +2645,8 @@ class Good(Hashable):
26392645
class AlsoGood(Hashable):
26402646
a: int
26412647

2642-
@dataclasses.dataclass() # E: Incompatible override of '__hash__': dataclasses without 'frozen' or 'unsafe_hash' have '__hash__' set to None
2643-
class Bad(Hashable):
2648+
@dataclasses.dataclass()
2649+
class Bad(Hashable): # E: Incompatible override of '__hash__': dataclasses without 'frozen' or 'unsafe_hash' have '__hash__' set to None
26442650
a: int
26452651

26462652
Good(4)

test-data/unit/deps.test

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,7 @@ class B(A):
13901390
[out]
13911391
<m.A.(abstract)> -> <m.B.__init__>, m
13921392
<m.A.__dataclass_fields__> -> <m.B.__dataclass_fields__>
1393+
<m.A.__hash__> -> <m.B.__hash__>
13931394
<m.A.__init__> -> <m.B.__init__>, m.B.__init__
13941395
<m.A.__mypy-replace> -> <m.B.__mypy-replace>, m, m.B.__mypy-replace
13951396
<m.A.__new__> -> <m.B.__new__>
@@ -1422,6 +1423,7 @@ class B(A):
14221423
[out]
14231424
<m.A.(abstract)> -> <m.B.__init__>, m
14241425
<m.A.__dataclass_fields__> -> <m.B.__dataclass_fields__>
1426+
<m.A.__hash__> -> <m.B.__hash__>
14251427
<m.A.__init__> -> <m.B.__init__>, m.B.__init__
14261428
<m.A.__match_args__> -> <m.B.__match_args__>
14271429
<m.A.__mypy-replace> -> <m.B.__mypy-replace>, m, m.B.__mypy-replace

0 commit comments

Comments
 (0)