Skip to content

Commit 7b35bef

Browse files
isidenticalpablogsal
authored andcommitted
bpo-38870: Throw ValueError on invalid yield from usage (GH-17798)
1 parent 78018bb commit 7b35bef

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

Lib/ast.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -735,10 +735,10 @@ def visit_Yield(self, node):
735735

736736
def visit_YieldFrom(self, node):
737737
with self.delimit("(", ")"):
738-
self.write("yield from")
739-
if node.value:
740-
self.write(" ")
741-
self.traverse(node.value)
738+
self.write("yield from ")
739+
if not node.value:
740+
raise ValueError("Node can't be used without a value attribute.")
741+
self.traverse(node.value)
742742

743743
def visit_Raise(self, node):
744744
self.fill("raise")

Lib/test/test_unparse.py

+2
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ def test_invalid_fstring_conversion(self):
278278
def test_invalid_set(self):
279279
self.check_invalid(ast.Set(elts=[]))
280280

281+
def test_invalid_yield_from(self):
282+
self.check_invalid(ast.YieldFrom(value=None))
281283

282284
class DirectoryTestCase(ASTTestCase):
283285
"""Test roundtrip behaviour on all files in Lib and Lib/test."""

0 commit comments

Comments
 (0)