Small generator correction that leads to more stability in its result.

This commit is contained in:
Dave Halter
2015-11-11 11:34:18 +01:00
parent f1c827821b
commit 239f0d7213
2 changed files with 15 additions and 3 deletions

View File

@@ -644,10 +644,10 @@ class FunctionExecution(Executed):
break
return types
# TODO add execution_recursion_decorator
# TODO add execution_recursion_decorator?!
def get_yield_types(self):
yields = self.yields
stopAt = tree.ForStmt, tree.WhileStmt, FunctionExecution
stopAt = tree.ForStmt, tree.WhileStmt, FunctionExecution, tree.IfStmt
for_parents = [(x, x.get_parent_until((stopAt))) for x in yields]
# Calculate if the yields are placed within the same for loop.
@@ -668,7 +668,7 @@ class FunctionExecution(Executed):
elif for_stmt == self:
yields_order.append((None, [yield_]))
else:
yield self.get_return_types()
yield self.get_return_types(check_yields=True)
return
last_for_stmt = for_stmt

View File

@@ -131,6 +131,18 @@ def simple():
yield ""
a, b = simple()
#? int() str()
a
# For now this is ok.
#?
b
def simple2():
yield 1
yield ""
a, b = simple2()
#? int()
a
#? str()