summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorNeil Schemenauer <nascheme@enme.ucalgary.ca>2003-07-16 22:04:11 (GMT)
committerNeil Schemenauer <nascheme@enme.ucalgary.ca>2003-07-16 22:04:11 (GMT)
commit7555294576a642aac7359c51d9b806d17d17a678 (patch)
treed865292af300bfd9046465b28c94e34b680ebd65 /Objects
parentbfa6872260d2d5a98e6eea69db32c0a4695b6f21 (diff)
downloadcpython-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.c67
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 */