[pypy-svn] r17421 - in pypy/dist/pypy/interpreter: astcompiler pyparser/test

pedronis at codespeak.net pedronis at codespeak.net
Fri Sep 9 18:20:53 CEST 2005


Author: pedronis
Date: Fri Sep  9 18:20:51 2005
New Revision: 17421

Modified:
   pypy/dist/pypy/interpreter/astcompiler/pycodegen.py
   pypy/dist/pypy/interpreter/pyparser/test/test_astcompiler.py
Log:
more attribute migration control



Modified: pypy/dist/pypy/interpreter/astcompiler/pycodegen.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/pycodegen.py	(original)
+++ pypy/dist/pypy/interpreter/astcompiler/pycodegen.py	Fri Sep  9 18:20:51 2005
@@ -547,6 +547,7 @@
 
         stack = []
         for i, for_ in zip(range(len(node.quals)), node.quals):
+            assert isinstance(for_, ast.ListCompFor)
             start, anchor = self._visitListCompFor(for_)
             self.genexpr_cont_stack.append( None )
             for if_ in for_.ifs:
@@ -575,7 +576,6 @@
         self.__list_count = self.__list_count - 1
 
     def _visitListCompFor(self, node):
-        assert isinstance(node, ast.ListCompFor)
         start = self.newBlock()
         anchor = self.newBlock()
 
@@ -599,7 +599,9 @@
     def visitGenExpr(self, node):
         gen = GenExprCodeGenerator(self.space, node, self.scopes, self.class_name,
                                    self.get_module())
-        walk(node.code, gen)
+        inner = node.code
+        assert isinstance(inner, ast.GenExprInner)
+        walk(inner, gen)
         gen.finish()
         self.set_lineno(node)
         frees = gen.scope.get_free_vars()
@@ -613,7 +615,9 @@
             self.emitop_int('MAKE_FUNCTION', 0)
 
         # precomputation of outmost iterable
-        node.code.quals[0].iter.accept( self )
+        qual0 = inner.quals[0]
+        assert isinstance(qual0, ast.GenExprFor)
+        qual0.iter.accept( self )
         self.emit('GET_ITER')
         self.emitop_int('CALL_FUNCTION', 1)
 
@@ -623,6 +627,7 @@
 
         stack = []
         for i, for_ in zip(range(len(node.quals)), node.quals):
+            assert isinstance(for_, ast.GenExprFor)            
             start, anchor = self._visitGenExprFor(for_)
             self.genexpr_cont_stack.append( None )
             for if_ in for_.ifs:
@@ -647,7 +652,6 @@
         self.emitop_obj('LOAD_CONST', self.space.w_None)
 
     def _visitGenExprFor(self, node):
-        assert isinstance(node, ast.GenExprFor)
         start = self.newBlock()
         anchor = self.newBlock()
 

Modified: pypy/dist/pypy/interpreter/pyparser/test/test_astcompiler.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/test/test_astcompiler.py	(original)
+++ pypy/dist/pypy/interpreter/pyparser/test/test_astcompiler.py	Fri Sep  9 18:20:51 2005
@@ -29,6 +29,7 @@
      listmakers,
      dictmakers,
      multiexpr,
+     # genexps, investigate?
      attraccess,
      slices,
      imports,



More information about the Pypy-commit mailing list