[pypy-svn] r66354 - pypy/branch/parser-compiler/pypy/interpreter/astcompiler

benjamin at codespeak.net benjamin at codespeak.net
Sat Jul 18 15:28:28 CEST 2009


Author: benjamin
Date: Sat Jul 18 15:28:27 2009
New Revision: 66354

Modified:
   pypy/branch/parser-compiler/pypy/interpreter/astcompiler/assemble.py
   pypy/branch/parser-compiler/pypy/interpreter/astcompiler/codegen.py
Log:
pass lineno directly to update_position

Modified: pypy/branch/parser-compiler/pypy/interpreter/astcompiler/assemble.py
==============================================================================
--- pypy/branch/parser-compiler/pypy/interpreter/astcompiler/assemble.py	(original)
+++ pypy/branch/parser-compiler/pypy/interpreter/astcompiler/assemble.py	Sat Jul 18 15:28:27 2009
@@ -186,10 +186,10 @@
         index = self.add_const(obj)
         self.emit_op_arg(ops.LOAD_CONST, index)
 
-    def update_position(self, node):
-        self.lineno = node.lineno
+    def update_position(self, lineno):
+        self.lineno = lineno
         if self.first_lineno == -1:
-            self.first_lineno = node.lineno
+            self.first_lineno = lineno
 
     def _resolve_block_targets(self, blocks):
         last_extended_arg_count = 0

Modified: pypy/branch/parser-compiler/pypy/interpreter/astcompiler/codegen.py
==============================================================================
--- pypy/branch/parser-compiler/pypy/interpreter/astcompiler/codegen.py	(original)
+++ pypy/branch/parser-compiler/pypy/interpreter/astcompiler/codegen.py	Sat Jul 18 15:28:27 2009
@@ -233,7 +233,7 @@
         else:
             num_defaults = 0
         code = self.sub_scope(FunctionCodeGenerator, func.name, func)
-        self.update_position(func)
+        self.update_position(func.lineno)
         self._make_function(code, num_defaults)
         self.name_op(func.name, ast.Store)
 
@@ -244,11 +244,11 @@
         else:
             default_count = 0
         code = self.sub_scope(LambdaCodeGenerator, "<lambda>", lam)
-        self.update_position(lam)
+        self.update_position(lam.lineno)
         self._make_function(code, default_count)
 
     def visit_ClassDef(self, cls):
-        self.update_position(cls)
+        self.update_position(cls.lineno)
         self.load_const(self.space.wrap(cls.name))
         if cls.bases:
             bases_count = len(cls.bases)
@@ -257,7 +257,7 @@
             bases_count = 0
         self.emit_op_arg(ops.BUILD_TUPLE, bases_count)
         code = self.sub_scope(ClassCodeGenerator, cls.name, cls)
-        self.update_position(cls)
+        self.update_position(cls.lineno)
         self._make_function(code, 0)
         self.emit_op_arg(ops.CALL_FUNCTION, 0)
         self.emit_op(ops.BUILD_CLASS)
@@ -272,7 +272,7 @@
         return inplace_operations[op]
 
     def visit_AugAssign(self, assign):
-        self.update_position(assign)
+        self.update_position(assign.lineno)
         target = assign.target
         if isinstance(target, ast.Attribute):
             attr = ast.Attribute(target.value, target.attr, ast.AugLoad,
@@ -299,7 +299,7 @@
             raise AssertionError("unkown augassign")
 
     def visit_Assert(self, asrt):
-        self.update_position(asrt)
+        self.update_position(asrt.lineno)
         end = self.new_block()
         asrt.test.walkabout(self)
         self.emit_jump(ops.JUMP_IF_TRUE, end)
@@ -322,13 +322,13 @@
         return binary_operations[op]
 
     def visit_BinOp(self, binop):
-        self.update_position(binop)
+        self.update_position(binop.lineno)
         binop.left.walkabout(self)
         binop.right.walkabout(self)
         self.emit_op(self._binop(binop.op))
 
     def visit_Return(self, ret):
-        self.update_position(ret)
+        self.update_position(ret.lineno)
         if ret.value:
             ret.value.walkabout(self)
         else:
@@ -336,6 +336,7 @@
         self.emit_op(ops.RETURN_VALUE)
 
     def visit_Print(self, pr):
+        self.update_position(pr.lineno)
         have_dest = bool(pr.dest)
         if have_dest:
             pr.dest.walkabout(self)
@@ -358,11 +359,11 @@
             self.emit_op(ops.POP_TOP)
 
     def visit_Delete(self, delete):
-        self.update_position(delete)
+        self.update_position(delete.lineno)
         self.visit_sequence(delete.targets)
 
     def visit_If(self, if_):
-        self.update_position(if_)
+        self.update_position(if_.lineno)
         end = self.new_block()
         test_constant = misc.expr_constant(self.space, if_.test)
         if test_constant == misc.CONST_FALSE:
@@ -384,7 +385,7 @@
         self.use_next_block(end)
 
     def visit_Break(self, br):
-        self.update_position(br)
+        self.update_position(br.lineno)
         for f_block in self.frame_blocks:
             if f_block[0] == F_BLOCK_LOOP:
                 break
@@ -414,7 +415,7 @@
             self.error("'continue' not allowed in 'finally' clause", cont)
 
     def visit_For(self, fr):
-        self.update_position(fr)
+        self.update_position(fr.lineno)
         start = self.new_block()
         cleanup = self.new_block()
         end = self.new_block()
@@ -435,7 +436,7 @@
         self.use_next_block(end)
 
     def visit_While(self, wh):
-        self.update_position(wh)
+        self.update_position(wh.lineno)
         test_constant = misc.expr_constant(self.space, wh.test)
         if test_constant == misc.CONST_FALSE:
             if wh.orelse:
@@ -465,7 +466,7 @@
             self.use_next_block(end)
 
     def visit_TryExcept(self, te):
-        self.update_position(te)
+        self.update_position(te.lineno)
         exc = self.new_block()
         otherwise = self.new_block()
         end = self.new_block()
@@ -478,7 +479,7 @@
         self.emit_jump(ops.JUMP_FORWARD, otherwise)
         self.use_next_block(exc)
         for handler in te.handlers:
-            self.update_position(handler)
+            self.update_position(handler.lineno)
             next_except = self.new_block()
             if handler.type:
                 self.emit_op(ops.DUP_TOP)
@@ -504,7 +505,7 @@
         self.use_next_block(end)
 
     def visit_TryFinally(self, tf):
-        self.update_position(tf)
+        self.update_position(tf.lineno)
         end = self.new_block()
         self.emit_jump(ops.SETUP_FINALLY, end)
         body = self.use_next_block()
@@ -538,7 +539,7 @@
         self.name_op(alias.asname, ast.Store)
 
     def visit_Import(self, imp):
-        self.update_position(imp)
+        self.update_position(imp.lineno)
         for alias in imp.names:
             if self.compile_info.flags & consts.CO_FUTURE_ABSOLUTE_IMPORT:
                 level = 0
@@ -558,7 +559,7 @@
                 self.name_op(store_name, ast.Store)
 
     def visit_ImportFrom(self, imp):
-        self.update_position(imp)
+        self.update_position(imp.lineno)
         space = self.space
         if imp.module == "__future__":
             if self.done_with_future:
@@ -592,7 +593,7 @@
             self.emit_op(ops.POP_TOP)
 
     def visit_Assign(self, assign):
-        self.update_position(assign)
+        self.update_position(assign.lineno)
         assign.value.walkabout(self)
         duplications = len(assign.targets) - 1
         for i in range(len(assign.targets)):
@@ -601,7 +602,7 @@
             assign.targets[i].walkabout(self)
 
     def visit_With(self, wih):
-        self.update_position(wih)
+        self.update_position(wih.lineno)
         body_block = self.new_block()
         cleanup = self.new_block()
         exit_storage = self.current_temporary_name()
@@ -638,7 +639,7 @@
         self.pop_frame_block(F_BLOCK_FINALLY_END, cleanup)
 
     def visit_Raise(self, rais):
-        self.update_position(rais)
+        self.update_position(rais.lineno)
         arg = 0
         if rais.type:
             rais.type.walkabout(self)
@@ -652,7 +653,7 @@
         self.emit_op_arg(ops.RAISE_VARARGS, arg)
 
     def visit_Exec(self, exc):
-        self.update_position(exc)
+        self.update_position(exc.lineno)
         exc.body.walkabout(self)
         if exc.globals:
             exc.globals.walkabout(self)
@@ -670,10 +671,10 @@
         pass
 
     def visit_Pass(self, pas):
-        self.update_position(pas)
+        self.update_position(pas.lineno)
 
     def visit_Expr(self, expr):
-        self.update_position(expr)
+        self.update_position(expr.lineno)
         if self.interactive:
             expr.value.walkabout(self)
             self.emit_op(ops.PRINT_EXPR)
@@ -683,7 +684,7 @@
             self.emit_op(ops.POP_TOP)
 
     def visit_Yield(self, yie):
-        self.update_position(yie)
+        self.update_position(yie.lineno)
         if yie.value:
             yie.value.walkabout(self)
         else:
@@ -691,20 +692,20 @@
         self.emit_op(ops.YIELD_VALUE)
 
     def visit_Num(self, num):
-        self.update_position(num)
+        self.update_position(num.lineno)
         self.load_const(num.n)
 
     def visit_Str(self, string):
-        self.update_position(string)
+        self.update_position(string.lineno)
         self.load_const(string.s)
 
     def visit_UnaryOp(self, op):
-        self.update_position(op)
+        self.update_position(op.lineno)
         op.operand.walkabout(self)
         self.emit_op(unary_operations[op.op])
 
     def visit_BoolOp(self, op):
-        self.update_position(op)
+        self.update_position(op.lineno)
         if op.op == ast.And:
             instr = ops.JUMP_IF_FALSE
         else:
@@ -718,7 +719,7 @@
         self.use_next_block(end)
 
     def visit_Compare(self, comp):
-        self.update_position(comp)
+        self.update_position(comp.lineno)
         comp.left.walkabout(self)
         ops_count = len(comp.ops)
         cleanup = None
@@ -746,7 +747,7 @@
             self.use_next_block(end)
 
     def visit_IfExp(self, ifexp):
-        self.update_position(ifexp)
+        self.update_position(ifexp.lineno)
         end = self.new_block()
         otherwise = self.new_block()
         ifexp.test.walkabout(self)
@@ -760,7 +761,7 @@
         self.use_next_block(end)
 
     def visit_Tuple(self, tup):
-        self.update_position(tup)
+        self.update_position(tup.lineno)
         if tup.elts:
             elt_count = len(tup.elts)
         else:
@@ -773,7 +774,7 @@
             self.emit_op_arg(ops.BUILD_TUPLE, elt_count)
 
     def visit_List(self, l):
-        self.update_position(l)
+        self.update_position(l.lineno)
         if l.elts:
             elt_count = len(l.elts)
         else:
@@ -786,7 +787,7 @@
             self.emit_op_arg(ops.BUILD_LIST, elt_count)
 
     def visit_Dict(self, d):
-        self.update_position(d)
+        self.update_position(d.lineno)
         self.emit_op_arg(ops.BUILD_MAP, 0)
         if d.values:
             for i in range(len(d.values)):
@@ -797,7 +798,7 @@
                 self.emit_op(ops.STORE_SUBSCR)
 
     def visit_Name(self, name):
-        self.update_position(name)
+        self.update_position(name.lineno)
         self.name_op(name.id, name.ctx)
 
     def visit_keyword(self, keyword):
@@ -805,7 +806,7 @@
         keyword.value.walkabout(self)
 
     def visit_Call(self, call):
-        self.update_position(call)
+        self.update_position(call.lineno)
         if self._optimize_builtin_call(call) or \
                 self._optimize_method_call(call):
             return
@@ -913,7 +914,7 @@
             self.name_op(list_name, ast.Del)
 
     def visit_ListComp(self, lc):
-        self.update_position(lc)
+        self.update_position(lc.lineno)
         tmp_name = self.current_temporary_name()
         self.emit_op_arg(ops.BUILD_LIST, 0)
         self.emit_op(ops.DUP_TOP)
@@ -969,14 +970,14 @@
 
     def visit_GeneratorExp(self, genexp):
         code = self.sub_scope(GenExpCodeGenerator, "<genexp>", genexp)
-        self.update_position(genexp)
+        self.update_position(genexp.lineno)
         self._make_function(code)
         genexp.generators[0].iter.walkabout(self)
         self.emit_op(ops.GET_ITER)
         self.emit_op_arg(ops.CALL_FUNCTION, 1)
 
     def visit_Attribute(self, attr):
-        self.update_position(attr)
+        self.update_position(attr.lineno)
         names = self.names
         if attr.ctx != ast.AugStore:
             attr.value.walkabout(self)
@@ -1076,7 +1077,7 @@
         self.emit_op(subscr_operations[ctx])
 
     def visit_Subscript(self, sub):
-        self.update_position(sub)
+        self.update_position(sub.lineno)
         if sub.ctx != ast.AugStore:
             sub.value.walkabout(self)
         self._compile_slice(sub.slice, sub.ctx)
@@ -1115,7 +1116,7 @@
         for i in range(len(args)):
             arg = args[i]
             if isinstance(arg, ast.Tuple):
-                self.update_position(arg)
+                self.update_position(arg.lineno)
                 self.name_op(".%i" % (i,), ast.Load)
                 arg.walkabout(self)
 
@@ -1157,7 +1158,7 @@
 
     def _compile(self, genexp):
         assert isinstance(genexp, ast.GeneratorExp)
-        self.update_position(genexp)
+        self.update_position(genexp.lineno)
         self._genexp_generator(genexp.generators, 0, genexp.elt)
 
     def _get_code_flags(self):



More information about the Pypy-commit mailing list