Kaydet (Commit) ed4cefbe authored tarafından Georg Brandl's avatar Georg Brandl

Fix a small nit in the error message if bool() falls back on __len__ and it…

Fix a small nit in the error message if bool() falls back on __len__ and it returns the wrong type: it would tell the user that __nonzero__ should return bool or int.
üst 3259ef3d
...@@ -5096,6 +5096,7 @@ slot_nb_nonzero(PyObject *self) ...@@ -5096,6 +5096,7 @@ slot_nb_nonzero(PyObject *self)
PyObject *func, *args; PyObject *func, *args;
static PyObject *nonzero_str, *len_str; static PyObject *nonzero_str, *len_str;
int result = -1; int result = -1;
int using_len = 0;
func = lookup_maybe(self, "__nonzero__", &nonzero_str); func = lookup_maybe(self, "__nonzero__", &nonzero_str);
if (func == NULL) { if (func == NULL) {
...@@ -5104,6 +5105,7 @@ slot_nb_nonzero(PyObject *self) ...@@ -5104,6 +5105,7 @@ slot_nb_nonzero(PyObject *self)
func = lookup_maybe(self, "__len__", &len_str); func = lookup_maybe(self, "__len__", &len_str);
if (func == NULL) if (func == NULL)
return PyErr_Occurred() ? -1 : 1; return PyErr_Occurred() ? -1 : 1;
using_len = 1;
} }
args = PyTuple_New(0); args = PyTuple_New(0);
if (args != NULL) { if (args != NULL) {
...@@ -5114,8 +5116,10 @@ slot_nb_nonzero(PyObject *self) ...@@ -5114,8 +5116,10 @@ slot_nb_nonzero(PyObject *self)
result = PyObject_IsTrue(temp); result = PyObject_IsTrue(temp);
else { else {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"__nonzero__ should return " "%s should return "
"bool or int, returned %s", "bool or int, returned %s",
(using_len ? "__len__"
: "__nonzero__"),
temp->ob_type->tp_name); temp->ob_type->tp_name);
result = -1; result = -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment