From 768d739c1cd8c1d41902229581811a9b86bcc76e Mon Sep 17 00:00:00 2001 From: Vlad Emelianov Date: Sun, 1 Mar 2020 20:59:26 +0100 Subject: bpo-38641: Add lib2to3 support for starred expressions in return/yield statements (GH-16994) --- Lib/lib2to3/Grammar.txt | 4 ++-- Lib/lib2to3/tests/data/py3_test_grammar.py | 14 +++++++++++++- Misc/ACKS | 1 + .../next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst | 2 ++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst diff --git a/Lib/lib2to3/Grammar.txt b/Lib/lib2to3/Grammar.txt index 68b7386..51f5820 100644 --- a/Lib/lib2to3/Grammar.txt +++ b/Lib/lib2to3/Grammar.txt @@ -49,7 +49,7 @@ pass_stmt: 'pass' flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt break_stmt: 'break' continue_stmt: 'continue' -return_stmt: 'return' [testlist] +return_stmt: 'return' [testlist_star_expr] yield_stmt: yield_expr raise_stmt: 'raise' [test ['from' test | ',' test [',' test]]] import_stmt: import_name | import_from @@ -151,4 +151,4 @@ testlist1: test (',' test)* encoding_decl: NAME yield_expr: 'yield' [yield_arg] -yield_arg: 'from' test | testlist +yield_arg: 'from' test | testlist_star_expr diff --git a/Lib/lib2to3/tests/data/py3_test_grammar.py b/Lib/lib2to3/tests/data/py3_test_grammar.py index e0b6828..d062232 100644 --- a/Lib/lib2to3/tests/data/py3_test_grammar.py +++ b/Lib/lib2to3/tests/data/py3_test_grammar.py @@ -473,15 +473,27 @@ class GrammarTests(unittest.TestCase): test_inner() def testReturn(self): - # 'return' [testlist] + # 'return' [testlist_star_expr] def g1(): return def g2(): return 1 + return_list = [2, 3] + def g3(): return 1, *return_list g1() x = g2() + x3 = g3() check_syntax_error(self, "class foo:return 1") def testYield(self): + # 'yield' [yield_arg] + def g1(): yield 1 + yield_list = [2, 3] + def g2(): yield 1, *yield_list + def g3(): yield from iter(yield_list) + x1 = g1() + x2 = g2() + x3 = g3() check_syntax_error(self, "class foo:yield 1") + check_syntax_error(self, "def g4(): yield from *a") def testRaise(self): # 'raise' test [',' test] diff --git a/Misc/ACKS b/Misc/ACKS index 1b5febb..b36e2de 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1914,5 +1914,6 @@ Jelle Zijlstra Gennadiy Zlobin Doug Zongker Peter Åstrand +Vlad Emelianov (Entries should be added in rough alphabetical order by last names) diff --git a/Misc/NEWS.d/next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst b/Misc/NEWS.d/next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst new file mode 100644 index 0000000..c547712 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst @@ -0,0 +1,2 @@ +Added starred expressions support to ``return`` and ``yield`` statements for +``lib2to3``. Patch by Vlad Emelianov. -- cgit v0.12