[pypy-commit] pypy py3.5: fix annotation bug reported by hubo on pypy-dev
cfbolz
pypy.commits at gmail.com
Sat Jul 28 08:07:49 EDT 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: py3.5
Changeset: r94913:179c172169f1
Date: 2018-07-28 14:06 +0200
http://bitbucket.org/pypy/pypy/changeset/179c172169f1/
Log: fix annotation bug reported by hubo on pypy-dev
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
@@ -622,6 +622,10 @@
assert isinstance(args, ast.arguments)
if args.args:
self._visit_arg_annotations(args.args)
+ if args.vararg:
+ self._visit_arg_annotation(args.vararg)
+ if args.kwarg:
+ self._visit_arg_annotation(args.kwarg)
if args.kwonlyargs:
self._visit_arg_annotations(args.kwonlyargs)
if func.returns:
@@ -630,8 +634,11 @@
def _visit_arg_annotations(self, args):
for arg in args:
assert isinstance(arg, ast.arg)
- if arg.annotation:
- arg.annotation.walkabout(self)
+ self._visit_arg_annotation(arg)
+
+ def _visit_arg_annotation(self, arg):
+ if arg.annotation:
+ arg.annotation.walkabout(self)
def visit_Name(self, name):
if name.ctx == ast.Load:
diff --git a/pypy/interpreter/test/test_syntax.py b/pypy/interpreter/test/test_syntax.py
--- a/pypy/interpreter/test/test_syntax.py
+++ b/pypy/interpreter/test/test_syntax.py
@@ -691,6 +691,16 @@
"bye" : 5, "kw" : 6, "return" : 42}
"""
+ def test_bug_annotations_lambda(self):
+ """
+ # those used to crash
+ def broken(*a: lambda x: None):
+ pass
+
+ def broken(**a: lambda x: None):
+ pass
+ """
+
class AppTestSyntaxError:
def test_tokenizer_error_location(self):
More information about the pypy-commit
mailing list