diff options
Diffstat (limited to 'Objects/object.c')
-rw-r--r-- | Objects/object.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Objects/object.c b/Objects/object.c index 81de3b8..9c74e07 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1673,6 +1673,22 @@ notimplemented_dealloc(PyObject* ignore) Py_FatalError("deallocating NotImplemented"); } +static int +notimplemented_bool(PyObject *v) +{ + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "NotImplemented should not be used in a boolean context", + 1) < 0) + { + return -1; + } + return 1; +} + +static PyNumberMethods notimplemented_as_number = { + .nb_bool = notimplemented_bool, +}; + PyTypeObject _PyNotImplemented_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "NotImplementedType", @@ -1683,8 +1699,8 @@ PyTypeObject _PyNotImplemented_Type = { 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ - NotImplemented_repr, /*tp_repr*/ - 0, /*tp_as_number*/ + NotImplemented_repr, /*tp_repr*/ + ¬implemented_as_number, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash */ |