grant list.index() a more informative error message #7252
This commit is contained in:
parent
e2caf1f60e
commit
c45a0cfb5f
|
@ -2276,7 +2276,8 @@ static PyObject *
|
||||||
listindex(PyListObject *self, PyObject *args)
|
listindex(PyListObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
Py_ssize_t i, start=0, stop=Py_SIZE(self);
|
Py_ssize_t i, start=0, stop=Py_SIZE(self);
|
||||||
PyObject *v;
|
PyObject *v, *format_tuple, *err_string;
|
||||||
|
static PyObject *err_format = NULL;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
|
if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
|
||||||
_PyEval_SliceIndex, &start,
|
_PyEval_SliceIndex, &start,
|
||||||
|
@ -2299,7 +2300,20 @@ listindex(PyListObject *self, PyObject *args)
|
||||||
else if (cmp < 0)
|
else if (cmp < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
PyErr_SetString(PyExc_ValueError, "list.index(x): x not in list");
|
if (err_format == NULL) {
|
||||||
|
err_format = PyString_FromString("%r is not in list");
|
||||||
|
if (err_format == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
format_tuple = PyTuple_Pack(1, v);
|
||||||
|
if (format_tuple == NULL)
|
||||||
|
return NULL;
|
||||||
|
err_string = PyString_Format(err_format, format_tuple);
|
||||||
|
Py_DECREF(format_tuple);
|
||||||
|
if (err_string == NULL)
|
||||||
|
return NULL;
|
||||||
|
PyErr_SetObject(PyExc_ValueError, err_string);
|
||||||
|
Py_DECREF(err_string);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue