1
0
forked from VimPlug/jedi

Fix issues with py__iter__types.

This commit is contained in:
Dave Halter
2015-12-02 07:11:36 +01:00
parent 41537a78e1
commit 9a2256f557
4 changed files with 21 additions and 9 deletions

View File

@@ -500,6 +500,14 @@ def py__iter__(evaluator, types):
yield result
def py__iter__types(evaluator, types):
"""
Calls `py__iter__`, but ignores the ordering in the end and just returns
all types that it contains.
"""
return unite(py__iter__(evaluator, types))
def get_iterator_types(evaluator, element):
"""Returns the types of any iterator (arrays, yields, __iter__, etc)."""
iterators = []
@@ -580,7 +588,8 @@ def _check_array_additions(evaluator, compare_array, module, is_list):
result |= unite(evaluator.eval_element(node) for node in nodes)
elif add_name in ['extend', 'update']:
for key, nodes in params:
result |= unite(get_iterator_types(evaluator, node) for node in nodes)
types = unite(evaluator.eval_element(n) for n in nodes)
result |= py__iter__types(evaluator, types)
return result
from jedi.evaluate import representation as er, param
@@ -691,8 +700,8 @@ class _ArrayInstance(IterableWrapper):
"""
items = set()
for key, nodes in self.var_args.unpack():
for node in nodes:
items |= get_iterator_types(self._evaluator, node)
types = unite(self._evaluator.eval_element(n) for n in nodes)
items |= py__iter__types(self._evaluator, types)
module = self.var_args.get_parent_until()
is_list = str(self.instance.name) == 'list'