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):
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");