Add warnings for arguments named None. All set. (I could add a

warning for 'global None', but that's either accompanied by an
assignment to None, which will trigger a warning, or not, in which
case it's harmless. :-)
This commit is contained in:
Guido van Rossum 2002-08-16 02:48:11 +00:00
parent 80703c8930
commit b7164621fa
1 changed files with 9 additions and 1 deletions

View File

@ -5025,6 +5025,14 @@ symtable_add_def(struct symtable *st, char *name, int flag)
char buffer[MANGLE_LEN]; char buffer[MANGLE_LEN];
int ret; int ret;
/* Warn about None, except inside a tuple (where the assignment
code already issues a warning). */
if ((flag & DEF_PARAM) && !(flag & DEF_INTUPLE) &&
*name == 'N' && strcmp(name, "None") == 0)
{
if (symtable_warn(st, "argument named None"))
return -1;
}
if (_Py_Mangle(st->st_private, name, buffer, sizeof(buffer))) if (_Py_Mangle(st->st_private, name, buffer, sizeof(buffer)))
name = buffer; name = buffer;
if ((s = PyString_InternFromString(name)) == NULL) if ((s = PyString_InternFromString(name)) == NULL)
@ -5310,7 +5318,7 @@ symtable_funcdef(struct symtable *st, node *n)
} }
/* The next two functions parse the argument tuple. /* The next two functions parse the argument tuple.
symtable_default_arg() checks for names in the default arguments, symtable_default_args() checks for names in the default arguments,
which are references in the defining scope. symtable_params() which are references in the defining scope. symtable_params()
parses the parameter names, which are defined in the function's parses the parameter names, which are defined in the function's
body. body.