1
0
forked from VimPlug/jedi

Move yields -> iter_yield_exprs.

This commit is contained in:
Dave Halter
2017-04-30 01:56:17 +02:00
parent 606871eb62
commit 42fe1aeaa1
3 changed files with 11 additions and 15 deletions

View File

@@ -319,7 +319,7 @@ class FunctionExecutionContext(context.TreeContext):
if check_yields:
types = set()
returns = funcdef.yields
returns = funcdef.iter_yield_exprs()
else:
returns = funcdef.iter_return_stmts()
types = set(docstrings.infer_return_types(self.function_context))
@@ -352,7 +352,7 @@ class FunctionExecutionContext(context.TreeContext):
def get_yield_values(self):
for_parents = [(y, tree.search_ancestor(y, ('for_stmt', 'funcdef',
'while_stmt', 'if_stmt')))
for y in self.tree_node.yields]
for y in self.tree_node.iter_yield_exprs()]
# Calculate if the yields are placed within the same for loop.
yields_order = []

View File

@@ -239,9 +239,6 @@ class Scope(PythonBaseNode, DocstringMixin):
def __init__(self, children):
super(Scope, self).__init__(children)
def iter_return_stmts(self):
return self._search_in_scope(ReturnStmt)
def iter_funcdefs(self):
return self._search_in_scope(Function)
@@ -461,13 +458,15 @@ class Function(ClassOrFunc):
def name(self):
return self.children[1] # First token after `def`
@property
def yields(self):
def iter_yield_exprs(self):
# TODO This is incorrect, yields are also possible in a statement.
return list(self._search_in_scope(YieldExpr))
return self._search_in_scope(YieldExpr)
def iter_return_stmts(self):
return self._search_in_scope(ReturnStmt)
def is_generator(self):
return bool(self.yields)
return next(self.iter_yield_exprs(), None) is not None
@property
def annotation(self):