forked from VimPlug/jedi
parser.Tree.ForStmt got more utility functions.
This commit is contained in:
@@ -151,11 +151,11 @@ class Evaluator(object):
|
|||||||
|
|
||||||
for_stmt = stmt.get_parent_until(tree.ForStmt)
|
for_stmt = stmt.get_parent_until(tree.ForStmt)
|
||||||
if isinstance(for_stmt, tree.ForStmt) and types \
|
if isinstance(for_stmt, tree.ForStmt) and types \
|
||||||
and isinstance(for_stmt.children[1], tree.Name):
|
and for_stmt.defines_one_name():
|
||||||
# Iterate through result and add the values, that's possible
|
# Iterate through result and add the values, that's possible
|
||||||
# only in for loops without clutter, because they are
|
# only in for loops without clutter, because they are
|
||||||
# predictable. Also only do it, if the variable is not a tuple.
|
# predictable. Also only do it, if the variable is not a tuple.
|
||||||
for_iterable = self.eval_element(for_stmt.children[3])
|
for_iterable = self.eval_element(for_stmt.get_input_node())
|
||||||
ordered = iterable.ordered_elements_of_iterable(self, for_iterable, types)
|
ordered = iterable.ordered_elements_of_iterable(self, for_iterable, types)
|
||||||
|
|
||||||
for index_types in ordered:
|
for index_types in ordered:
|
||||||
|
|||||||
@@ -988,6 +988,21 @@ class ForStmt(Flow):
|
|||||||
for node_to_execute in child.nodes_to_execute():
|
for node_to_execute in child.nodes_to_execute():
|
||||||
yield node_to_execute
|
yield node_to_execute
|
||||||
|
|
||||||
|
def get_input_node(self):
|
||||||
|
"""
|
||||||
|
Returns the input node ``y`` from: ``for x in y:``.
|
||||||
|
"""
|
||||||
|
return self.children[3]
|
||||||
|
|
||||||
|
def defines_one_name(self):
|
||||||
|
"""
|
||||||
|
Returns True if only one name is returned: ``for x in y``.
|
||||||
|
Returns False if the for loop is more complicated: ``for x, z in y``.
|
||||||
|
|
||||||
|
:returns: bool
|
||||||
|
"""
|
||||||
|
return self.children[1].type == 'name'
|
||||||
|
|
||||||
|
|
||||||
class TryStmt(Flow):
|
class TryStmt(Flow):
|
||||||
type = 'try_stmt'
|
type = 'try_stmt'
|
||||||
|
|||||||
Reference in New Issue
Block a user