[Python-checkins] python/dist/src/Python compile.c,2.269,2.270
gvanrossum@users.sourceforge.net
gvanrossum@users.sourceforge.net
Mon, 23 Dec 2002 08:51:44 -0800
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1:/tmp/cvs-serv29919/Python
Modified Files:
compile.c
Log Message:
Oops. Roll back that last change. It wasn't ready for release. :-(
Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.269
retrieving revision 2.270
diff -C2 -d -r2.269 -r2.270
*** compile.c 23 Dec 2002 16:33:46 -0000 2.269
--- compile.c 23 Dec 2002 16:51:42 -0000 2.270
***************
*** 576,580 ****
static int issue_warning(const char *, const char *, int);
- static int symtable_warn(struct symtable *, char *);
static int com_init(struct compiling *, const char *);
static void com_free(struct compiling *);
--- 576,579 ----
***************
*** 1008,1069 ****
}
- static int num_literals = 3;
- static char *literal_names[] = {"None", "True", "False"};
- static PyObject *literals;
-
- static int
- init_literals(void)
- {
- int i;
-
- literals = PyDict_New();
- if (literals == NULL)
- return -1;
- for (i = 0; i < num_literals; i++)
- if (PyDict_SetItemString(literals, literal_names[i],
- Py_None) < 0)
- return -1;
- return 0;
- }
-
- static int
- check_literal(PyObject *name, struct compiling *c, struct symtable *st)
- {
- /* check for literal names that will become keywords in the future */
- if (literals == NULL && init_literals() < 0)
- return -1;
- if (!PyString_Check(name))
- return -1;
- if (PyDict_GetItem(literals, name)) {
- char buf[1024];
- PyOS_snprintf(buf, sizeof(buf), "'%s' may become a keyword",
- PyString_AS_STRING(name));
- if (c && (issue_warning(buf, c->c_filename, c->c_lineno) < 0))
- return -1;
- if (st && (symtable_warn(st, buf) < 0))
- return -1;
- }
- return 0;
- }
-
- static int
- check_literal_str(const char *name, struct compiling *c, struct symtable *st)
- {
- int i;
-
- for (i = 0; i < num_literals; i++)
- if (strcmp(literal_names[i], name) == 0) {
- char buf[1024];
- PyOS_snprintf(buf, sizeof(buf),
- "'%s' may become a keyword", name);
- if (c &&
- issue_warning(buf, c->c_filename, c->c_lineno) < 0)
- return -1;
- if (st && symtable_warn(st, buf) < 0)
- return -1;
- }
- return 0;
- }
-
static void
com_addop_varname(struct compiling *c, int kind, char *name)
--- 1007,1010 ----
***************
*** 1123,1134 ****
Py_DECREF(v);
- if (kind == VAR_STORE || kind == VAR_DELETE) {
- if (check_literal(v, c, NULL) < 0) {
- c->c_errors++;
- i = 255;
- goto done;
- }
- }
-
switch (kind) {
case VAR_LOAD:
--- 1064,1067 ----
***************
*** 1198,1202 ****
chars on the total length of dotted names, I just can't be
bothered right now */
-
if (TYPE(n) == STAR)
name = "*";
--- 1131,1134 ----
***************
*** 1207,1214 ****
for (i = 0; i < NCH(n); i += 2) {
char *s = STR(CHILD(n, i));
- if (check_literal_str(s, c, NULL) < 0) {
- name = NULL;
- break;
- }
if (p + strlen(s) > buffer + (sizeof buffer) - 2) {
com_error(c, PyExc_MemoryError,
--- 1139,1142 ----
***************
*** 1226,1231 ****
REQ(n, NAME);
name = STR(n);
- if (check_literal_str(name, c, NULL) < 0)
- name = NULL;
}
com_addop_name(c, op, name);
--- 1154,1157 ----
***************
*** 3047,3057 ****
tup = PyTuple_New((NCH(n) - 2)/2);
for (i = 3; i < NCH(n); i += 2) {
- char *s = STR(CHILD(CHILD(n, i), 0));
- if (check_literal_str(s, c, NULL) < 0) {
- c->c_errors++;
- return;
- }
PyTuple_SET_ITEM(tup, (i-3)/2,
! PyString_FromString(s));
}
}
--- 2973,2979 ----
tup = PyTuple_New((NCH(n) - 2)/2);
for (i = 3; i < NCH(n); i += 2) {
PyTuple_SET_ITEM(tup, (i-3)/2,
! PyString_FromString(STR(
! CHILD(CHILD(n, i), 0))));
}
}
***************
*** 3993,4013 ****
com_arglist(struct compiling *c, node *n)
{
! int i;
int complex = 0;
REQ(n, varargslist);
/* varargslist:
(fpdef ['=' test] ',')* (fpdef ['=' test] | '*' .....) */
! /* Check if the argument list includes nested tuples */
! for (i = 0; i < NCH(n); i++)
! if (TYPE(CHILD(n, i)) == LPAR) {
! complex = 1;
break;
}
! /* If it does, generate code to unpack them. */
if (complex) {
/* Generate code for complex arguments only after
having counted the simple arguments */
int ilocal = 0;
! for (i = 0; i < NCH(n); i++) {
node *ch = CHILD(n, i);
node *fp;
--- 3915,3952 ----
com_arglist(struct compiling *c, node *n)
{
! int nch, i, narg;
int complex = 0;
+ char nbuf[30];
REQ(n, varargslist);
/* varargslist:
(fpdef ['=' test] ',')* (fpdef ['=' test] | '*' .....) */
! nch = NCH(n);
! /* Enter all arguments in table of locals */
! for (i = 0, narg = 0; i < nch; i++) {
! node *ch = CHILD(n, i);
! node *fp;
! if (TYPE(ch) == STAR || TYPE(ch) == DOUBLESTAR)
break;
+ REQ(ch, fpdef); /* fpdef: NAME | '(' fplist ')' */
+ fp = CHILD(ch, 0);
+ if (TYPE(fp) != NAME) {
+ PyOS_snprintf(nbuf, sizeof(nbuf), ".%d", i);
+ complex = 1;
}
! narg++;
! /* all name updates handled by symtable */
! if (++i >= nch)
! break;
! ch = CHILD(n, i);
! if (TYPE(ch) == EQUAL)
! i += 2;
! else
! REQ(ch, COMMA);
! }
if (complex) {
/* Generate code for complex arguments only after
having counted the simple arguments */
int ilocal = 0;
! for (i = 0; i < nch; i++) {
node *ch = CHILD(n, i);
node *fp;
***************
*** 4022,4026 ****
}
ilocal++;
! if (++i >= NCH(n))
break;
ch = CHILD(n, i);
--- 3961,3965 ----
}
ilocal++;
! if (++i >= nch)
break;
ch = CHILD(n, i);
***************
*** 5421,5425 ****
{
int i, complex = -1, ext = 0;
! node *c = NULL, *ch = NULL;
if (TYPE(n) == parameters) {
--- 5360,5364 ----
{
int i, complex = -1, ext = 0;
! node *c = NULL;
if (TYPE(n) == parameters) {
***************
*** 5438,5449 ****
continue;
}
! ch = CHILD(c, 0);
! if (TYPE(ch) == NAME) {
! if (check_literal_str(STR(ch), NULL, st) < 0) {
! st->st_errors++;
! return;
! }
symtable_add_def(st, STR(CHILD(c, 0)), DEF_PARAM);
! } else {
char nbuf[30];
PyOS_snprintf(nbuf, sizeof(nbuf), ".%d", i);
--- 5377,5383 ----
continue;
}
! if (TYPE(CHILD(c, 0)) == NAME)
symtable_add_def(st, STR(CHILD(c, 0)), DEF_PARAM);
! else {
char nbuf[30];
PyOS_snprintf(nbuf, sizeof(nbuf), ".%d", i);