]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38641: Add lib2to3 support for starred expressions in return/yield statements...
authorVlad Emelianov <volshebnyi@gmail.com>
Sun, 1 Mar 2020 19:59:26 +0000 (20:59 +0100)
committerGitHub <noreply@github.com>
Sun, 1 Mar 2020 19:59:26 +0000 (19:59 +0000)
Lib/lib2to3/Grammar.txt
Lib/lib2to3/tests/data/py3_test_grammar.py
Misc/ACKS
Misc/NEWS.d/next/Library/2019-10-30-15-31-09.bpo-38641.HrTL9k.rst [new file with mode: 0644]

index 68b73868b58282fce8ad32809c6350f587706090..51f58209f036f74fb23d258b4340d77a7cff4e29 100644 (file)
@@ -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
index e0b682837e1d89bb5be1853981ec8f429658b570..d06223207e1ec0034c70af38439ac25388370146 100644 (file)
@@ -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]
index 1b5febb1d19d82670c86578efd432a2ac66df8ce..b36e2de4c2ba58db193475d9bef2bc107115c509 100644 (file)
--- 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 (file)
index 0000000..c547712
--- /dev/null
@@ -0,0 +1,2 @@
+Added starred expressions support to ``return`` and ``yield`` statements for
+``lib2to3``. Patch by Vlad Emelianov.