mirror of https://github.com/python/cpython
clearer error messages for apply() and "no locals"
This commit is contained in:
parent
b4ed8c4db0
commit
c862cf400f
|
@ -70,8 +70,9 @@ builtin_apply(PyObject *self, PyObject *args)
|
|||
if (alist != NULL) {
|
||||
if (!PyTuple_Check(alist)) {
|
||||
if (!PySequence_Check(alist)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"apply() arg 2 must be a sequence");
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"apply() arg 2 expect sequence, found %s",
|
||||
alist->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
t = PySequence_Tuple(alist);
|
||||
|
@ -81,8 +82,9 @@ builtin_apply(PyObject *self, PyObject *args)
|
|||
}
|
||||
}
|
||||
if (kwdict != NULL && !PyDict_Check(kwdict)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"apply() arg 3 must be a dictionary");
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"apply() arg 3 expected dictionary, found %s",
|
||||
kwdict->ob_type->tp_name);
|
||||
goto finally;
|
||||
}
|
||||
retval = PyEval_CallObjectWithKeywords(func, alist, kwdict);
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
#include <ctype.h>
|
||||
|
||||
#define REPR(O) PyString_AS_STRING(PyObject_Repr(O))
|
||||
|
||||
/* Turn this on if your compiler chokes on the big switch: */
|
||||
/* #define CASE_TOO_BIG 1 */
|
||||
|
||||
|
@ -1438,8 +1440,9 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
|
|||
w = GETNAMEV(oparg);
|
||||
v = POP();
|
||||
if ((x = f->f_locals) == NULL) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"no locals");
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals found when storing %s",
|
||||
REPR(w));
|
||||
break;
|
||||
}
|
||||
err = PyDict_SetItem(x, w, v);
|
||||
|
@ -1449,8 +1452,9 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
|
|||
case DELETE_NAME:
|
||||
w = GETNAMEV(oparg);
|
||||
if ((x = f->f_locals) == NULL) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"no locals");
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals when deleting %s",
|
||||
REPR(w));
|
||||
break;
|
||||
}
|
||||
if ((err = PyDict_DelItem(x, w)) != 0)
|
||||
|
@ -1543,8 +1547,9 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
|
|||
case LOAD_NAME:
|
||||
w = GETNAMEV(oparg);
|
||||
if ((x = f->f_locals) == NULL) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"no locals");
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals when loading %s",
|
||||
REPR(w));
|
||||
break;
|
||||
}
|
||||
x = PyDict_GetItem(x, w);
|
||||
|
@ -1716,7 +1721,7 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
|
|||
PyFrame_FastToLocals(f);
|
||||
if ((x = f->f_locals) == NULL) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"no locals");
|
||||
"no locals found during 'import *'");
|
||||
break;
|
||||
}
|
||||
err = import_all_from(x, v);
|
||||
|
|
Loading…
Reference in New Issue