mirror of
https://github.com/python/cpython.git
synced 2025-10-25 18:54:53 +00:00
Merged revisions 55225-55227,55229-55269 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r55238 | guido.van.rossum | 2007-05-10 16:46:05 -0700 (Thu, 10 May 2007) | 9 lines
Merged revisions 55227 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55227 | guido.van.rossum | 2007-05-10 10:20:15 -0700 (Thu, 10 May 2007) | 2 lines
Fix a bug in test_c_api() that caused a negative refcount.
........
................
r55246 | neal.norwitz | 2007-05-11 00:01:52 -0700 (Fri, 11 May 2007) | 1 line
Remove commands.getstatus() it is obsolete.
................
r55248 | neal.norwitz | 2007-05-11 00:29:05 -0700 (Fri, 11 May 2007) | 2 lines
Remove bsddb185 support.
................
r55249 | neal.norwitz | 2007-05-11 00:29:50 -0700 (Fri, 11 May 2007) | 1 line
Remove bsddb185 module too
................
r55250 | neal.norwitz | 2007-05-11 00:32:13 -0700 (Fri, 11 May 2007) | 1 line
bsddb185: Gotta remove from the file checked in, not Setup
................
r55251 | neal.norwitz | 2007-05-11 00:53:26 -0700 (Fri, 11 May 2007) | 1 line
Remove obsolete IRIX modules (as much as I could find, there is probably more)
................
r55252 | neal.norwitz | 2007-05-11 00:55:35 -0700 (Fri, 11 May 2007) | 1 line
Remove SGI turd.
................
r55254 | georg.brandl | 2007-05-11 03:11:01 -0700 (Fri, 11 May 2007) | 2 lines
Add a case for set comprehensions to the "cannot assign to" switch.
................
r55255 | georg.brandl | 2007-05-11 03:11:25 -0700 (Fri, 11 May 2007) | 2 lines
Fix wrong imports.
................
r55261 | georg.brandl | 2007-05-11 07:37:48 -0700 (Fri, 11 May 2007) | 2 lines
Remove removed tex files.
................
r55262 | georg.brandl | 2007-05-11 08:28:41 -0700 (Fri, 11 May 2007) | 2 lines
Commit PEP 3132 implementation.
................
r55264 | georg.brandl | 2007-05-11 08:50:19 -0700 (Fri, 11 May 2007) | 2 lines
Check in the inevitable AST version number and format Py_ssize_t with %zd.
................
r55265 | neal.norwitz | 2007-05-11 09:12:22 -0700 (Fri, 11 May 2007) | 1 line
Remove mention of os.popen* and popen2.* since these will be removed.
................
r55266 | neal.norwitz | 2007-05-11 09:19:57 -0700 (Fri, 11 May 2007) | 1 line
Get doc to build again (almost, the doc is fine)
................
r55267 | neal.norwitz | 2007-05-11 09:21:02 -0700 (Fri, 11 May 2007) | 1 line
Really get doc to build (remove use of string module)
................
r55269 | neal.norwitz | 2007-05-11 09:29:43 -0700 (Fri, 11 May 2007) | 1 line
Add some notes to cleanup later
................
This commit is contained in:
parent
bdde01168f
commit
0368b726a1
57 changed files with 842 additions and 22519 deletions
|
|
@ -786,6 +786,8 @@ opcode_stack_effect(int opcode, int oparg)
|
|||
return 0;
|
||||
case UNPACK_SEQUENCE:
|
||||
return oparg-1;
|
||||
case UNPACK_EX:
|
||||
return (oparg&0xFF) + (oparg>>8);
|
||||
case FOR_ITER:
|
||||
return 1;
|
||||
|
||||
|
|
@ -2617,7 +2619,21 @@ compiler_list(struct compiler *c, expr_ty e)
|
|||
{
|
||||
int n = asdl_seq_LEN(e->v.List.elts);
|
||||
if (e->v.List.ctx == Store) {
|
||||
ADDOP_I(c, UNPACK_SEQUENCE, n);
|
||||
int i, seen_star = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
expr_ty elt = asdl_seq_GET(e->v.List.elts, i);
|
||||
if (elt->kind == Starred_kind && !seen_star) {
|
||||
ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8)));
|
||||
seen_star = 1;
|
||||
asdl_seq_SET(e->v.List.elts, i, elt->v.Starred.value);
|
||||
} else if (elt->kind == Starred_kind) {
|
||||
return compiler_error(c,
|
||||
"two starred expressions in assignment");
|
||||
}
|
||||
}
|
||||
if (!seen_star) {
|
||||
ADDOP_I(c, UNPACK_SEQUENCE, n);
|
||||
}
|
||||
}
|
||||
VISIT_SEQ(c, expr, e->v.List.elts);
|
||||
if (e->v.List.ctx == Load) {
|
||||
|
|
@ -2631,7 +2647,21 @@ compiler_tuple(struct compiler *c, expr_ty e)
|
|||
{
|
||||
int n = asdl_seq_LEN(e->v.Tuple.elts);
|
||||
if (e->v.Tuple.ctx == Store) {
|
||||
ADDOP_I(c, UNPACK_SEQUENCE, n);
|
||||
int i, seen_star = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
expr_ty elt = asdl_seq_GET(e->v.Tuple.elts, i);
|
||||
if (elt->kind == Starred_kind && !seen_star) {
|
||||
ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8)));
|
||||
seen_star = 1;
|
||||
asdl_seq_SET(e->v.Tuple.elts, i, elt->v.Starred.value);
|
||||
} else if (elt->kind == Starred_kind) {
|
||||
return compiler_error(c,
|
||||
"two starred expressions in assignment");
|
||||
}
|
||||
}
|
||||
if (!seen_star) {
|
||||
ADDOP_I(c, UNPACK_SEQUENCE, n);
|
||||
}
|
||||
}
|
||||
VISIT_SEQ(c, expr, e->v.Tuple.elts);
|
||||
if (e->v.Tuple.ctx == Load) {
|
||||
|
|
@ -3257,6 +3287,18 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
|
|||
return 0;
|
||||
}
|
||||
break;
|
||||
case Starred_kind:
|
||||
switch (e->v.Starred.ctx) {
|
||||
case Store:
|
||||
/* In all legitimate cases, the Starred node was already replaced
|
||||
* by compiler_list/compiler_tuple. XXX: is that okay? */
|
||||
return compiler_error(c,
|
||||
"starred assignment target must be in a list or tuple");
|
||||
default:
|
||||
return compiler_error(c,
|
||||
"can use starred expression only as assignment target");
|
||||
}
|
||||
break;
|
||||
case Name_kind:
|
||||
return compiler_nameop(c, e->v.Name.id, e->v.Name.ctx);
|
||||
/* child nodes of List and Tuple will have expr_context set */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue