[pypy-commit] pypy py3.5-async: Add handle_power with atom item
raffael_t
pypy.commits at gmail.com
Tue Jul 5 12:09:24 EDT 2016
Author: Raffael Tfirst <raffael.tfirst at gmail.com>
Branch: py3.5-async
Changeset: r85568:6d1701e65706
Date: 2016-07-05 18:08 +0200
http://bitbucket.org/pypy/pypy/changeset/6d1701e65706/
Log: Add handle_power with atom item
diff --git a/pypy/interpreter/astcompiler/astbuilder.py b/pypy/interpreter/astcompiler/astbuilder.py
--- a/pypy/interpreter/astcompiler/astbuilder.py
+++ b/pypy/interpreter/astcompiler/astbuilder.py
@@ -946,34 +946,40 @@
raise AssertionError("invalid factor node")
return ast.UnaryOp(op, expr, factor_node.get_lineno(), factor_node.get_column())
- def handle_atom_expr(self, power_node):
+ def handle_atom_expr(self, atom_node):
start = 0
- num_ch = power_node.num_children()
- if power_node.get_child(0).type == tokens.AWAIT:
+ num_ch = atom_node.num_children()
+ if atom_node.get_child(0).type == tokens.AWAIT:
start = 1
- atom_expr = self.handle_atom(power_node.get_child(start))
+ atom_expr = self.handle_atom(atom_node.get_child(start))
if num_ch == 1:
return atom_expr
if start and num_ch == 2:
- return ast.Await(atom_expr, power_node.get_lineno(),
- power_node.get_column())
+ return ast.Await(atom_expr, atom_node.get_lineno(),
+ atom_node.get_column())
for i in range(start+1, num_ch):
- trailer = power_node.get_child(i)
+ trailer = atom_node.get_child(i)
if trailer.type != syms.trailer:
break
tmp_atom_expr = self.handle_trailer(trailer, atom_expr)
tmp_atom_expr.lineno = atom_expr.lineno
tmp_atom_expr.col_offset = atom_expr.col_offset
atom_expr = tmp_atom_expr
+ if start:
+ return ast.Await(atom_expr, atom_node.get_lineno(),
+ atom_node.get_column())
+ else:
+ return atom_expr
+
+ def handle_power(self, power_node):
+ atom_expr = self.handle_atom_expr(power_node.get_child(0))
+ if power_node.num_children() == 1:
+ return atom_expr
if power_node.get_child(-1).type == syms.factor:
right = self.handle_expr(power_node.get_child(-1))
atom_expr = ast.BinOp(atom_expr, ast.Pow, right, power_node.get_lineno(),
power_node.get_column())
- if start:
- return ast.Await(atom_expr, power_node.get_lineno(),
- power_node.get_column())
- else:
- return atom_expr
+ return atom_expr
def handle_slice(self, slice_node):
first_child = slice_node.get_child(0)
More information about the pypy-commit
mailing list