Commit 3853c437 authored by Stefan Behnel's avatar Stefan Behnel

make unpacking exception strings look like those generated by Python itself

parent 595c2453
...@@ -2133,8 +2133,8 @@ class SequenceNode(ExprNode): ...@@ -2133,8 +2133,8 @@ class SequenceNode(ExprNode):
rhs.generate_disposal_code(code) rhs.generate_disposal_code(code)
for i in range(len(self.args)): for i in range(len(self.args)):
item = self.unpacked_items[i] item = self.unpacked_items[i]
unpack_code = "__Pyx_UnpackItem(%s)" % ( unpack_code = "__Pyx_UnpackItem(%s, %d)" % (
self.iterator.py_result()) self.iterator.py_result(), i)
code.putln( code.putln(
"%s = %s; %s" % ( "%s = %s; %s" % (
item.result_code, item.result_code,
...@@ -3879,18 +3879,20 @@ bad: ...@@ -3879,18 +3879,20 @@ bad:
unpacking_utility_code = [ unpacking_utility_code = [
""" """
static PyObject *__Pyx_UnpackItem(PyObject *); /*proto*/ static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
static int __Pyx_EndUnpack(PyObject *); /*proto*/ static int __Pyx_EndUnpack(PyObject *); /*proto*/
""",""" ""","""
static void __Pyx_UnpackError(void) { static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
PyErr_SetString(PyExc_ValueError, "unpack sequence of wrong size");
}
static PyObject *__Pyx_UnpackItem(PyObject *iter) {
PyObject *item; PyObject *item;
if (!(item = PyIter_Next(iter))) { if (!(item = PyIter_Next(iter))) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
__Pyx_UnpackError(); PyErr_Format(PyExc_ValueError,
#if PY_VERSION_HEX < 0x02050000
"need more than %d values to unpack", (int)index);
#else
"need more than %zd values to unpack", index);
#endif
}
} }
return item; return item;
} }
...@@ -3899,7 +3901,7 @@ static int __Pyx_EndUnpack(PyObject *iter) { ...@@ -3899,7 +3901,7 @@ static int __Pyx_EndUnpack(PyObject *iter) {
PyObject *item; PyObject *item;
if ((item = PyIter_Next(iter))) { if ((item = PyIter_Next(iter))) {
Py_DECREF(item); Py_DECREF(item);
__Pyx_UnpackError(); PyErr_SetString(PyExc_ValueError, "too many values to unpack");
return -1; return -1;
} }
else if (!PyErr_Occurred()) else if (!PyErr_Occurred())
......
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