]> granicus.if.org Git - python/commit
the previous quick hack to fix def foo((x,y)) failed on some cases
authorJeremy Hylton <jeremy@alum.mit.edu>
Thu, 17 Feb 2000 22:09:35 +0000 (22:09 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Thu, 17 Feb 2000 22:09:35 +0000 (22:09 +0000)
commit3ec7e2c4be9b3127ed1b10de6e3c48e1786c1a10
treeab6383ea0770c6358db907c0cf02cbd99588f9b6
parent7708d697ee38f5d8c61b88737e941a4d1eb49691
the previous quick hack to fix def foo((x,y)) failed on some cases
(big surprise).  new solution is a little less hackish.

Code gen adds a TupleArg instance in the argument slot. The tuple arg
includes a copy of the names that it is responsble for binding.  The
PyAssembler uses this information to calculate the correct argcount.

all fix this wacky case: del (a, ((b,), c)), d
which is the same as: del a, b, c, d
(Can't wait for Guido to tell me why.)

solution uses findOp which walks a tree to find out whether it
contains OP_ASSIGN or OP_DELETE or ...
Lib/compiler/pyassem.py
Lib/compiler/pycodegen.py
Tools/compiler/compiler/pyassem.py
Tools/compiler/compiler/pycodegen.py