Issue #24619: More tests; fix nits in compiler.c

This commit is contained in:
Yury Selivanov 2015-07-22 14:48:57 +03:00
parent 8fb307cd65
commit b7666a3093
4 changed files with 9 additions and 9 deletions

View File

@ -1,2 +1,2 @@
async def foo(a:await something()): async def foo(a=await something()):
pass pass

View File

@ -205,12 +205,14 @@ class AsyncBadSyntaxTest(unittest.TestCase):
return lambda a: await return lambda a: await
""", """,
"""async def foo(a: await b): """await a()""",
"""async def foo(a=await b):
pass pass
""", """,
"""def baz(): """def baz():
async def foo(a: await b): async def foo(a=await b):
pass pass
""", """,
@ -271,10 +273,9 @@ class AsyncBadSyntaxTest(unittest.TestCase):
pass\nawait a pass\nawait a
"""] """]
ns = {}
for code in samples: for code in samples:
with self.subTest(code=code), self.assertRaises(SyntaxError): with self.subTest(code=code), self.assertRaises(SyntaxError):
exec(code, ns, ns) compile(code, "<test>", "exec")
def test_goodsyntax_1(self): def test_goodsyntax_1(self):
# Tests for issue 24619 # Tests for issue 24619

View File

@ -1749,13 +1749,12 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
arglength = asdl_seq_LEN(args->defaults); arglength = asdl_seq_LEN(args->defaults);
arglength |= kw_default_count << 8; arglength |= kw_default_count << 8;
arglength |= num_annotations << 16; arglength |= num_annotations << 16;
if (is_async)
co->co_flags |= CO_COROUTINE;
compiler_make_closure(c, co, arglength, qualname); compiler_make_closure(c, co, arglength, qualname);
Py_DECREF(qualname); Py_DECREF(qualname);
Py_DECREF(co); Py_DECREF(co);
if (is_async)
co->co_flags |= CO_COROUTINE;
/* decorators */ /* decorators */
for (i = 0; i < asdl_seq_LEN(decos); i++) { for (i = 0; i < asdl_seq_LEN(decos); i++) {
ADDOP_I(c, CALL_FUNCTION, 1); ADDOP_I(c, CALL_FUNCTION, 1);

View File

@ -1542,7 +1542,7 @@ symtable_visit_annotations(struct symtable *st, stmt_ty s,
if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs)) if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs))
return 0; return 0;
if (returns) if (returns)
VISIT(st, expr, s->v.FunctionDef.returns); VISIT(st, expr, returns);
return 1; return 1;
} }