Author: Raffael Tfirst <raffael.tfi...@gmail.com> Branch: py3.5-async Changeset: r85593:90196ea803fd Date: 2016-07-06 22:22 +0200 http://bitbucket.org/pypy/pypy/changeset/90196ea803fd/
Log: Undo visit_annotations parameter change, add asyncfunctiondef and asyncwith 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 @@ -366,13 +366,29 @@ assert isinstance(args, ast.arguments) self.visit_sequence(args.defaults) self.visit_kwonlydefaults(args.kw_defaults) - self._visit_annotations(func, func.args, func.returns) + self._visit_annotations(func) self.visit_sequence(func.decorator_list) new_scope = FunctionScope(func.name, func.lineno, func.col_offset) self.push_scope(new_scope, func) func.args.walkabout(self) self.visit_sequence(func.body) self.pop_scope() + + def visit_AsyncFunctionDef(self, func): + self.note_symbol(func.name, SYM_ASSIGNED) + # Function defaults and decorators happen in the outer scope. + args = func.args + assert isinstance(args, ast.arguments) + self.visit_sequence(args.defaults) + self.visit_kwonlydefaults(args.kw_defaults) + self._visit_annotations(func) + self.visit_sequence(func.decorator_list) + new_scope = FunctionScope(func.name, func.lineno, func.col_offset) + self.push_scope(new_scope, func) + func.args.walkabout(self) + self.visit_sequence(func.body) + self.pop_scope() + def visit_Return(self, ret): self.scope.note_return(ret) @@ -507,6 +523,13 @@ witem.context_expr.walkabout(self) if witem.optional_vars: witem.optional_vars.walkabout(self) + + def visit_AsyncWith(self, aw): + self.scope.new_temporary_name() + self.visit_sequence(aw.items) + self.scope.note_try_start(aw) + self.visit_sequence(aw.body) + self.scope.note_try_end(aw) def visit_arguments(self, arguments): scope = self.scope @@ -527,13 +550,14 @@ arg = params[i].arg self.note_symbol(arg, SYM_PARAM) - def _visit_annotations(self, func, args, returns): + def _visit_annotations(self, func): + args = func.args assert isinstance(args, ast.arguments) if args.args: self._visit_arg_annotations(args.args) if args.kwonlyargs: self._visit_arg_annotations(args.kwonlyargs) - if returns: + if func.returns: func.returns.walkabout(self) def _visit_arg_annotations(self, args): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit