mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-34854: Fix compiling string annotations containing lambdas. (GH-9645)
* Compiling a string annotation containing a lambda with keyword-only argument without default value caused a crash. * Remove the final "*" (it is incorrect syntax) in the representation of lambda without *args and keyword-only arguments when compile from AST. * Improve the representation of lambda without arguments.
This commit is contained in:
parent
d5bd036138
commit
2a2940e5c3
3 changed files with 11 additions and 5 deletions
|
@ -178,11 +178,12 @@ class AnnotationsFutureTestCase(unittest.TestCase):
|
|||
eq('-1')
|
||||
eq('~int and not v1 ^ 123 + v2 | True')
|
||||
eq('a + (not b)')
|
||||
eq('lambda: None')
|
||||
eq('lambda arg: None')
|
||||
eq('lambda a=True: a')
|
||||
eq('lambda a, b, c=True: a')
|
||||
eq("lambda a, b, c=True, *, d=1 << v2, e='str': a")
|
||||
eq("lambda a, b, c=True, *vararg, d=v1 << 2, e='str', **kwargs: a + b")
|
||||
eq("lambda a, b, c=True, *vararg, d, e='str', **kwargs: a + b")
|
||||
eq('lambda x: lambda y: x + y')
|
||||
eq('1 if True else 2')
|
||||
eq('str or None if int or True else str or bytes or None')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue