diff options
author | Neil Schemenauer <nascheme@enme.ucalgary.ca> | 2003-07-16 22:04:11 (GMT) |
---|---|---|
committer | Neil Schemenauer <nascheme@enme.ucalgary.ca> | 2003-07-16 22:04:11 (GMT) |
commit | 7555294576a642aac7359c51d9b806d17d17a678 (patch) | |
tree | d865292af300bfd9046465b28c94e34b680ebd65 /Objects | |
parent | bfa6872260d2d5a98e6eea69db32c0a4695b6f21 (diff) | |
download | cpython-7555294576a642aac7359c51d9b806d17d17a678.zip cpython-7555294576a642aac7359c51d9b806d17d17a678.tar.gz cpython-7555294576a642aac7359c51d9b806d17d17a678.tar.bz2 |
Remove code that tried to warn about shadowing builtin names after a
module had been compiled. It gives too many spurious warnings.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/moduleobject.c | 67 |
1 files changed, 1 insertions, 66 deletions
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 5195388..812cbc4 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -198,71 +198,6 @@ module_repr(PyModuleObject *m) return PyString_FromFormat("<module '%s' from '%s'>", name, filename); } -static PyObject * -find_builtin_names(void) -{ - PyObject *builtins, *names, *key, *value; - int pos = 0; - builtins = PyEval_GetBuiltins(); - if (builtins == NULL || !PyDict_Check(builtins)) { - PyErr_SetString(PyExc_SystemError, "no builtins dict!"); - return NULL; - } - names = PyDict_New(); - if (names == NULL) - return NULL; - while (PyDict_Next(builtins, &pos, &key, &value)) { - if (PyString_Check(key) && - PyString_Size(key) > 0 && - PyString_AS_STRING(key)[0] != '_') { - if (PyDict_SetItem(names, key, Py_None) < 0) { - Py_DECREF(names); - return NULL; - } - } - } - return names; -} - -/* returns 0 or 1 (and -1 on error) */ -static int -shadows_builtin(PyObject *globals, PyObject *name) -{ - static PyObject *builtin_names = NULL; - if (builtin_names == NULL) { - builtin_names = find_builtin_names(); - if (builtin_names == NULL) - return -1; - } - if (!PyString_Check(name)) - return 0; - if (PyDict_GetItem(globals, name) == NULL && - PyDict_GetItem(builtin_names, name) != NULL) { - return 1; - } - else { - return 0; - } -} - -static int -module_setattr(PyObject *m, PyObject *name, PyObject *value) -{ - PyObject *globals = ((PyModuleObject *)m)->md_dict; - PyObject *builtins = PyEval_GetBuiltins(); - if (globals != NULL && globals != builtins) { - int shadows = shadows_builtin(globals, name); - if (shadows == 1) { - if (PyErr_Warn(PyExc_DeprecationWarning, - "assignment shadows builtin") < 0) - return -1; - } - else if (shadows == -1) - return -1; - } - return PyObject_GenericSetAttr(m, name, value); -} - /* We only need a traverse function, no clear function: If the module is in a cycle, md_dict will be cleared as well, which will break the cycle. */ @@ -299,7 +234,7 @@ PyTypeObject PyModule_Type = { 0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ - module_setattr, /* tp_setattro */ + PyObject_GenericSetAttr, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, /* tp_flags */ |