Mercurial > cpython-lru_cache-weakref
diff Python/compile.c @ 13584:2977fbae4ca5 legacy-trunk
raise error on duplicate function arguments
example:
>>> def f(a,a):print a
...
SyntaxError: duplicate argument in function definition
| author | Peter Schneider-Kamp <nowonder@nowonder.de> |
|---|---|
| date | Thu, 13 Jul 2000 06:15:04 +0000 |
| parents | a89f7f268de4 |
| children | 89f905870c0a |
line wrap: on
line diff
--- a/Python/compile.c Thu Jul 13 04:57:58 2000 +0000 +++ b/Python/compile.c Thu Jul 13 06:15:04 2000 +0000 @@ -3092,6 +3092,7 @@ node *ch = CHILD(n, i); node *fp; char *name; + PyObject *nameval; if (TYPE(ch) == STAR || TYPE(ch) == DOUBLESTAR) break; REQ(ch, fpdef); /* fpdef: NAME | '(' fplist ')' */ @@ -3103,7 +3104,15 @@ sprintf(nbuf, ".%d", i); complex = 1; } - com_newlocal(c, name); + nameval = PyString_InternFromString(name); + if (nameval == NULL) { + c->c_errors++; + } + if (PyDict_GetItem(c->c_locals, nameval)) { + com_error(c, PyExc_SyntaxError,"duplicate argument in function definition"); + } + com_newlocal_o(c, nameval); + Py_DECREF(nameval); c->c_argcount++; if (++i >= nch) break;
