From b7666a30933efbbb2e400e6916bba2311340fcd1 Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Wed, 22 Jul 2015 14:48:57 +0300 Subject: Issue #24619: More tests; fix nits in compiler.c --- Lib/test/badsyntax_async2.py | 2 +- Lib/test/test_coroutines.py | 9 +++++---- Python/compile.c | 5 ++--- Python/symtable.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Lib/test/badsyntax_async2.py b/Lib/test/badsyntax_async2.py index 6f6f4f5..fb85e29 100644 --- a/Lib/test/badsyntax_async2.py +++ b/Lib/test/badsyntax_async2.py @@ -1,2 +1,2 @@ -async def foo(a:await something()): +async def foo(a=await something()): pass diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index 3ba2f23..94994e5 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -205,12 +205,14 @@ class AsyncBadSyntaxTest(unittest.TestCase): return lambda a: await """, - """async def foo(a: await b): + """await a()""", + + """async def foo(a=await b): pass """, """def baz(): - async def foo(a: await b): + async def foo(a=await b): pass """, @@ -271,10 +273,9 @@ class AsyncBadSyntaxTest(unittest.TestCase): pass\nawait a """] - ns = {} for code in samples: with self.subTest(code=code), self.assertRaises(SyntaxError): - exec(code, ns, ns) + compile(code, "", "exec") def test_goodsyntax_1(self): # Tests for issue 24619 diff --git a/Python/compile.c b/Python/compile.c index 2202e8f..33cc8c2 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1749,13 +1749,12 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async) arglength = asdl_seq_LEN(args->defaults); arglength |= kw_default_count << 8; arglength |= num_annotations << 16; + if (is_async) + co->co_flags |= CO_COROUTINE; compiler_make_closure(c, co, arglength, qualname); Py_DECREF(qualname); Py_DECREF(co); - if (is_async) - co->co_flags |= CO_COROUTINE; - /* decorators */ for (i = 0; i < asdl_seq_LEN(decos); i++) { ADDOP_I(c, CALL_FUNCTION, 1); diff --git a/Python/symtable.c b/Python/symtable.c index 354b799..64910d8 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -1542,7 +1542,7 @@ symtable_visit_annotations(struct symtable *st, stmt_ty s, if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs)) return 0; if (returns) - VISIT(st, expr, s->v.FunctionDef.returns); + VISIT(st, expr, returns); return 1; } -- cgit v0.12