[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler pycodegen.py,1.38,1.39

Jeremy Hylton jhylton@users.sourceforge.net
Thu, 12 Apr 2001 14:54:43 -0700


Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv25483/compiler

Modified Files:
	pycodegen.py 
Log Message:
Pop loop off the loop stack before handling the loop's else clause.
Otherwise, continue/break will attempt to affect the wrong loop.

A few more fiddles to get the SET_LINENOs consistent across compilers.


Index: pycodegen.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/pycodegen.py,v
retrieving revision 1.38
retrieving revision 1.39
diff -C2 -r1.38 -r1.39
*** pycodegen.py	2001/04/12 21:04:43	1.38
--- pycodegen.py	2001/04/12 21:54:41	1.39
***************
*** 327,331 ****
          self.loops.push(loop)
  
!         self.set_lineno(node)
          self.visit(node.test)
          self.emit('JUMP_IF_FALSE', else_ or after)
--- 327,331 ----
          self.loops.push(loop)
  
!         self.set_lineno(node, force=1)
          self.visit(node.test)
          self.emit('JUMP_IF_FALSE', else_ or after)
***************
*** 339,345 ****
          self.emit('POP_TOP')
          self.emit('POP_BLOCK')
          if node.else_:
              self.visit(node.else_)
-         self.loops.pop()
          self.nextBlock(after)
  
--- 339,345 ----
          self.emit('POP_TOP')
          self.emit('POP_BLOCK')
+         self.loops.pop()
          if node.else_:
              self.visit(node.else_)
          self.nextBlock(after)
  
***************
*** 355,359 ****
          self.visit(ast.Const(0))
          self.nextBlock(start)
!         self.set_lineno(node)
          self.emit('FOR_LOOP', anchor)
          self.nextBlock()
--- 355,359 ----
          self.visit(ast.Const(0))
          self.nextBlock(start)
!         self.set_lineno(node, force=1)
          self.emit('FOR_LOOP', anchor)
          self.nextBlock()
***************
*** 363,369 ****
          self.startBlock(anchor)
          self.emit('POP_BLOCK')
          if node.else_:
              self.visit(node.else_)
-         self.loops.pop()
          self.nextBlock(after)
  
--- 363,369 ----
          self.startBlock(anchor)
          self.emit('POP_BLOCK')
+         self.loops.pop()
          if node.else_:
              self.visit(node.else_)
          self.nextBlock(after)