Change temp names created by listcomps from [%d] to _[%d], so the one-liner

[k for k in dir() if k[0] != "_"]
can be used to get the non-private names (used to contain "[1]").
This commit is contained in:
Tim Peters 2001-02-17 05:30:26 +00:00
parent 27eba5e888
commit 3081421d9e

View file

@ -1309,7 +1309,7 @@ com_list_comprehension(struct compiling *c, node *n)
{ {
/* listmaker: test list_for */ /* listmaker: test list_for */
char tmpname[12]; char tmpname[12];
sprintf(tmpname, "[%d]", ++c->c_tmpname); sprintf(tmpname, "_[%d]", ++c->c_tmpname);
com_addoparg(c, BUILD_LIST, 0); com_addoparg(c, BUILD_LIST, 0);
com_addbyte(c, DUP_TOP); /* leave the result on the stack */ com_addbyte(c, DUP_TOP); /* leave the result on the stack */
com_push(c, 2); com_push(c, 2);
@ -4689,7 +4689,7 @@ symtable_list_comprehension(struct symtable *st, node *n)
{ {
char tmpname[12]; char tmpname[12];
sprintf(tmpname, "[%d]", ++st->st_tmpname); sprintf(tmpname, "_[%d]", ++st->st_tmpname);
symtable_add_def(st, tmpname, DEF_LOCAL); symtable_add_def(st, tmpname, DEF_LOCAL);
symtable_assign(st, CHILD(n, 1), 0); symtable_assign(st, CHILD(n, 1), 0);
symtable_node(st, CHILD(n, 3)); symtable_node(st, CHILD(n, 3));