mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue 24226: Fix parsing of many sequential one-line 'def' statements.
This commit is contained in:
parent
a2c145c2f3
commit
8085b80c18
3 changed files with 51 additions and 8 deletions
|
@ -1,4 +1,5 @@
|
|||
import contextlib
|
||||
import inspect
|
||||
import sys
|
||||
import types
|
||||
import unittest
|
||||
|
@ -87,6 +88,28 @@ class AsyncBadSyntaxTest(unittest.TestCase):
|
|||
import test.badsyntax_async9
|
||||
|
||||
|
||||
class TokenizerRegrTest(unittest.TestCase):
|
||||
|
||||
def test_oneline_defs(self):
|
||||
buf = []
|
||||
for i in range(500):
|
||||
buf.append('def i{i}(): return {i}'.format(i=i))
|
||||
buf = '\n'.join(buf)
|
||||
|
||||
# Test that 500 consequent, one-line defs is OK
|
||||
ns = {}
|
||||
exec(buf, ns, ns)
|
||||
self.assertEqual(ns['i499'](), 499)
|
||||
|
||||
# Test that 500 consequent, one-line defs *and*
|
||||
# one 'async def' following them is OK
|
||||
buf += '\nasync def foo():\n return'
|
||||
ns = {}
|
||||
exec(buf, ns, ns)
|
||||
self.assertEqual(ns['i499'](), 499)
|
||||
self.assertTrue(inspect.iscoroutinefunction(ns['foo']))
|
||||
|
||||
|
||||
class CoroutineTest(unittest.TestCase):
|
||||
|
||||
def test_gen_1(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue