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
encoding_decl: NAME
yield_expr: 'yield' [yield_arg]
-yield_arg: 'from' test | testlist
+yield_arg: 'from' test | testlist_star_expr
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]
Gennadiy Zlobin
Doug Zongker
Peter Åstrand
+Vlad Emelianov
(Entries should be added in rough alphabetical order by last names)
--- /dev/null
+Added starred expressions support to ``return`` and ``yield`` statements for
+``lib2to3``. Patch by Vlad Emelianov.