Merge 3.5 (Issue #24528)
This commit is contained in:
commit
3bd2b98c29
|
@ -106,6 +106,16 @@ class AsyncBadSyntaxTest(unittest.TestCase):
|
|||
with self.assertRaisesRegex(SyntaxError, 'invalid syntax'):
|
||||
import test.badsyntax_async9
|
||||
|
||||
def test_badsyntax_10(self):
|
||||
ns = {}
|
||||
for comp in {'(await a for a in b)',
|
||||
'[await a for a in b]',
|
||||
'{await a for a in b}',
|
||||
'{await a: c for a in b}'}:
|
||||
|
||||
with self.assertRaisesRegex( SyntaxError, 'await.*in comprehen'):
|
||||
exec('async def f():\n\t{}'.format(comp), ns, ns)
|
||||
|
||||
|
||||
class TokenizerRegrTest(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -3856,7 +3856,10 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
|
|||
if (c->u->u_ste->ste_type != FunctionBlock)
|
||||
return compiler_error(c, "'await' outside function");
|
||||
|
||||
/* this check won't be triggered while we have AWAIT token */
|
||||
if (c->u->u_scope_type == COMPILER_SCOPE_COMPREHENSION)
|
||||
return compiler_error(
|
||||
c, "'await' expressions in comprehensions are not supported");
|
||||
|
||||
if (c->u->u_scope_type != COMPILER_SCOPE_ASYNC_FUNCTION)
|
||||
return compiler_error(c, "'await' outside async function");
|
||||
|
||||
|
|
Loading…
Reference in New Issue