Author: Raffael Tfirst <raffael.tfi...@gmail.com> Branch: py3.5-async Changeset: r85658:e779f313fab5 Date: 2016-07-11 18:17 +0200 http://bitbucket.org/pypy/pypy/changeset/e779f313fab5/
Log: Throw SyntaxError if 'yield from' inside async function (fixes test_invalid_7 in test_syntax) diff --git a/pypy/interpreter/astcompiler/symtable.py b/pypy/interpreter/astcompiler/symtable.py --- a/pypy/interpreter/astcompiler/symtable.py +++ b/pypy/interpreter/astcompiler/symtable.py @@ -88,6 +88,11 @@ """Called when a yield is found.""" raise SyntaxError("'yield' outside function", yield_node.lineno, yield_node.col_offset) + + def note_yieldFrom(self, yield_node): + """Called when a yield from is found.""" + raise SyntaxError("'yield' outside function", yield_node.lineno, + yield_node.col_offset) def note_return(self, ret): """Called when a return statement is found.""" @@ -249,6 +254,11 @@ self.is_generator = True if self._in_try_body_depth > 0: self.has_yield_inside_try = True + + def note_yieldFrom(self, yield_node): + self.is_generator = True + if self._in_try_body_depth > 0: + self.has_yield_inside_try = True def note_return(self, ret): if ret.value: @@ -288,10 +298,13 @@ FunctionScope.__init__(self, name, lineno, col_offset) def note_yield(self, yield_node): - """Called when a yield is found.""" raise SyntaxError("'yield' inside async function", yield_node.lineno, yield_node.col_offset) + def note_yieldFrom(self, yield_node): + raise SyntaxError("'yield from' inside async function", yield_node.lineno, + yield_node.col_offset) + class ClassScope(Scope): _hide_bound_from_nested_scopes = True @@ -448,7 +461,7 @@ ast.GenericASTVisitor.visit_Yield(self, yie) def visit_YieldFrom(self, yfr): - self.scope.note_yield(yfr) + self.scope.note_yieldFrom(yfr) ast.GenericASTVisitor.visit_YieldFrom(self, yfr) def visit_Global(self, glob): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit