[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler pyassem.py,1.11,1.12 pycodegen.py,1.24,1.25 transformer.py,1.14,1.15

Jeremy Hylton python-dev@python.org
Thu, 12 Oct 2000 13:23:27 -0700


Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory slayer.i.sourceforge.net:/tmp/cvs-serv2177/compiler

Modified Files:
	pyassem.py pycodegen.py transformer.py 
Log Message:
Fix SF bug #116263: support for from .. import *
transformer.py: return '*', None from com_import_as_name
pycodegen.py: special case for name == '*'
pyassem.py: fix stack counting for IMPORT_ opcodes


Index: pyassem.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/pyassem.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** pyassem.py	2000/09/01 20:47:37	1.11
--- pyassem.py	2000/10/12 20:23:23	1.12
***************
*** 516,519 ****
--- 516,522 ----
          'COMPARE_OP': -1,
          'STORE_FAST': -1,
+         'IMPORT_STAR': -1,
+         'IMPORT_NAME': 0,
+         'IMPORT_FROM': 1,
          }
      # use pattern match
***************
*** 521,525 ****
          ('BINARY_', -1),
          ('LOAD_', 1),
-         ('IMPORT_', 1),
          ]
      
--- 524,527 ----

Index: pycodegen.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/pycodegen.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -r1.24 -r1.25
*** pycodegen.py	2000/09/01 20:47:37	1.24
--- pycodegen.py	2000/10/12 20:23:23	1.25
***************
*** 440,446 ****
              if name == '*':
                  self.namespace = 0
!             self.emit('IMPORT_FROM', name)
!             self._resolveDots(name)
!             self.storeName(alias or name)
          self.emit('POP_TOP')
  
--- 440,451 ----
              if name == '*':
                  self.namespace = 0
!                 self.emit('IMPORT_STAR')
!                 # There can only be one name w/ from ... import *
!                 assert len(node.names) == 1
!                 return
!             else:
!                 self.emit('IMPORT_FROM', name)
!                 self._resolveDots(name)
!                 self.storeName(alias or name)
          self.emit('POP_TOP')
  

Index: transformer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/transformer.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** transformer.py	2000/09/20 02:47:28	1.14
--- transformer.py	2000/10/12 20:23:23	1.15
***************
*** 826,829 ****
--- 826,831 ----
  
      def com_import_as_name(self, node):
+         if node == '*':
+             return '*', None
          if node[0] == token.NAME:
              return node[1], None