diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 9a15d273..fe419fdf 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -307,8 +307,13 @@ class Array(IterableWrapper, ArrayMixin): While values returns the possible values for any array field, this function returns the value for a certain index. """ - values = self._values() - for value in values: + if self.type == 'dict': + # Get keys. + iterate = set(k for k, v in self._items()) + else: + iterate = self._items() + + for value in iterate: yield self._evaluator.eval_element(value) def _values(self): @@ -480,10 +485,6 @@ def py__iter__(evaluator, types): yield result -def py__iter__types(evaluator, types): - return unite(py__iter__(evaluator, types)) - - def get_iterator_types(evaluator, element): """Returns the types of any iterator (arrays, yields, __iter__, etc).""" iterators = [] diff --git a/test/completion/arrays.py b/test/completion/arrays.py index 0eb4ca31..21a0eb5c 100644 --- a/test/completion/arrays.py +++ b/test/completion/arrays.py @@ -234,6 +234,11 @@ dic = {str(key): ''} #? str() dic[''] + +for x in {1: 3.0, '': 1j}: + #? int() str() + x + # ----------------- # with variable as index # -----------------