mirror of https://github.com/python/cpython.git
SF bug #800796: Difference between hash() and __hash__()
slice(5).__hash__() now raises a TypeError.
This commit is contained in:
parent
a1a1dba2d4
commit
b859c070ef
|
@ -14,6 +14,11 @@ def test_constructor(self):
|
|||
def test_repr(self):
|
||||
self.assertEqual(repr(slice(1, 2, 3)), "slice(1, 2, 3)")
|
||||
|
||||
def test_hash(self):
|
||||
# Verify clearing of SF bug #800796
|
||||
self.assertRaises(TypeError, hash, slice(5))
|
||||
self.assertRaises(TypeError, slice(5).__hash__)
|
||||
|
||||
def test_cmp(self):
|
||||
s1 = slice(1, 2, 3)
|
||||
s2 = slice(1, 2, 3)
|
||||
|
|
|
@ -278,6 +278,13 @@ slice_compare(PySliceObject *v, PySliceObject *w)
|
|||
return result;
|
||||
}
|
||||
|
||||
static long
|
||||
slice_hash(PySliceObject *v)
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "unhashable type");
|
||||
return -1L;
|
||||
}
|
||||
|
||||
PyTypeObject PySlice_Type = {
|
||||
PyObject_HEAD_INIT(&PyType_Type)
|
||||
0, /* Number of items for varobject */
|
||||
|
@ -293,7 +300,7 @@ PyTypeObject PySlice_Type = {
|
|||
0, /* tp_as_number */
|
||||
0, /* tp_as_sequence */
|
||||
0, /* tp_as_mapping */
|
||||
0, /* tp_hash */
|
||||
(hashfunc)slice_hash, /* tp_hash */
|
||||
0, /* tp_call */
|
||||
0, /* tp_str */
|
||||
PyObject_GenericGetAttr, /* tp_getattro */
|
||||
|
|
Loading…
Reference in New Issue