[Python-checkins] CVS: python/dist/src/Python ceval.c,2.198,2.199
Paul Prescod
python-dev@python.org
Wed, 30 Aug 2000 13:25:05 -0700
- Previous message: [Python-checkins] CVS: distutils/distutils msvccompiler.py,1.38,1.39
- Next message: [Python-checkins] CVS: python/dist/src acconfig.h,1.35,1.36 config.h.in,2.69,2.70 configure,1.139,1.140 configure.in,1.150,1.151
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/dist/src/Python
In directory slayer.i.sourceforge.net:/tmp/cvs-serv17839
Modified Files:
ceval.c
Log Message:
Better error message with UnboundLocalError
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.198
retrieving revision 2.199
diff -C2 -r2.198 -r2.199
*** ceval.c 2000/08/29 04:56:13 2.198
--- ceval.c 2000/08/30 20:25:01 2.199
***************
*** 74,78 ****
--- 74,83 ----
static void set_exc_info(PyThreadState *, PyObject *, PyObject *, PyObject *);
static void reset_exc_info(PyThreadState *);
+ static void format_exc_check_arg(PyObject *, char *, PyObject *);
+ #define NAME_ERROR_MSG \
+ "There is no variable named '%s'"
+ #define UNBOUNDLOCAL_ERROR_MSG \
+ "Local variable '%.200s' referenced before assignment"
/* Dynamic execution profile */
***************
*** 1397,1401 ****
}
if ((err = PyDict_DelItem(x, w)) != 0)
! PyErr_SetObject(PyExc_NameError, w);
break;
--- 1402,1407 ----
}
if ((err = PyDict_DelItem(x, w)) != 0)
! format_exc_check_arg(PyExc_NameError,
! NAME_ERROR_MSG ,w);
break;
***************
*** 1472,1476 ****
w = GETNAMEV(oparg);
if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
! PyErr_SetObject(PyExc_NameError, w);
break;
--- 1478,1483 ----
w = GETNAMEV(oparg);
if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
! format_exc_check_arg(
! PyExc_NameError, NAME_ERROR_MSG ,w);
break;
***************
*** 1494,1499 ****
x = PyDict_GetItem(f->f_builtins, w);
if (x == NULL) {
! PyErr_SetObject(
! PyExc_NameError, w);
break;
}
--- 1501,1507 ----
x = PyDict_GetItem(f->f_builtins, w);
if (x == NULL) {
! format_exc_check_arg(
! PyExc_NameError,
! NAME_ERROR_MSG ,w);
break;
}
***************
*** 1510,1514 ****
x = PyDict_GetItem(f->f_builtins, w);
if (x == NULL) {
! PyErr_SetObject(PyExc_NameError, w);
break;
}
--- 1518,1524 ----
x = PyDict_GetItem(f->f_builtins, w);
if (x == NULL) {
! format_exc_check_arg(
! PyExc_NameError,
! NAME_ERROR_MSG ,w);
break;
}
***************
*** 1521,1527 ****
x = GETLOCAL(oparg);
if (x == NULL) {
! PyErr_SetObject(PyExc_UnboundLocalError,
! PyTuple_GetItem(co->co_varnames,
! oparg));
break;
}
--- 1531,1539 ----
x = GETLOCAL(oparg);
if (x == NULL) {
! format_exc_check_arg(
! PyExc_UnboundLocalError,
! UNBOUNDLOCAL_ERROR_MSG,
! PyTuple_GetItem(co->co_varnames, oparg)
! );
break;
}
***************
*** 1539,1545 ****
x = GETLOCAL(oparg);
if (x == NULL) {
! PyErr_SetObject(PyExc_UnboundLocalError,
! PyTuple_GetItem(co->co_varnames,
! oparg));
break;
}
--- 1551,1559 ----
x = GETLOCAL(oparg);
if (x == NULL) {
! format_exc_check_arg(
! PyExc_UnboundLocalError,
! UNBOUNDLOCAL_ERROR_MSG,
! PyTuple_GetItem(co->co_varnames, oparg)
! );
break;
}
***************
*** 3064,3067 ****
--- 3078,3095 ----
}
+ static void
+ format_exc_check_arg(PyObject *exc, char *format_str, PyObject *obj)
+ {
+ char *obj_str;
+
+ if (!obj)
+ return;
+
+ obj_str = PyString_AsString(obj);
+ if (!obj_str)
+ return;
+
+ PyErr_Format(exc, format_str, obj_str);
+ }
#ifdef DYNAMIC_EXECUTION_PROFILE
- Previous message: [Python-checkins] CVS: distutils/distutils msvccompiler.py,1.38,1.39
- Next message: [Python-checkins] CVS: python/dist/src acconfig.h,1.35,1.36 config.h.in,2.69,2.70 configure,1.139,1.140 configure.in,1.150,1.151
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]