[Python-bugs-list] [ python-Bugs-479186 ] compiler generates bad code for "del"

noreply@sourceforge.net noreply@sourceforge.net
Fri, 09 Nov 2001 08:24:59 -0800


Bugs item #479186, was opened at 2001-11-07 09:14
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=479186&group_id=5470

Category: Python Library
Group: None
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Neil Schemenauer (nascheme)
Assigned to: Jeremy Hylton (jhylton)
>Summary: compiler generates bad code for "del"

Initial Comment:
The compiler generates bad code from the following
statement:

  del a[0], a[1]

Here is the AST:

  Stmt([AssTuple([Subscript(Name('a'), 'OP_DELETE',
       [Const(0)]), Subscript(Name('a'), 'OP_DELETE',
       [Const(1)])])])

The bytecode generated is:

          0 SET_LINENO               0
          3 UNPACK_SEQUENCE          2
  BAD ------^^^^^^^^^^^^^^^^^^^^^^^^^^
          6 SET_LINENO               2
          9 LOAD_NAME                0 (a)
         12 LOAD_CONST               1 (0)
         15 DELETE_SUBSCR       
         16 LOAD_NAME                0 (a)
         19 LOAD_CONST               2 (1)
         22 DELETE_SUBSCR       


The problem, AFAICT, is that findOp does not find
OP_DELETE.  Adding a visitSubscript method to OpFinder
seems to be the fix.  A small patch is attached.  This
is a 2.1.2 bugfix candidate, IMO. 

----------------------------------------------------------------------

>Comment By: Jeremy Hylton (jhylton)
Date: 2001-11-09 08:24

Message:
Logged In: YES 
user_id=31392

Fixed in rev 1.57 of pycodegen.py.


----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=479186&group_id=5470