diff --git a/jedi/evaluate/docstrings.py b/jedi/evaluate/docstrings.py index 11bb16ae..033d5c10 100644 --- a/jedi/evaluate/docstrings.py +++ b/jedi/evaluate/docstrings.py @@ -164,8 +164,8 @@ def _execute_array_values(evaluator, array): """ if isinstance(array, Array): values = [] - for typ in array.values(): - objects = _execute_array_values(evaluator, typ) + for types in array.per_index_values(): + objects = set(chain.from_iterable(_execute_array_values(evaluator, typ) for typ in types)) values.append(AlreadyEvaluated(objects)) return [FakeSequence(evaluator, values, array.type)] else: diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 54d3a173..219612ed 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -271,6 +271,15 @@ class Array(IterableWrapper, ArrayMixin): raise AttributeError('Strange access on %s: %s.' % (self, name)) return getattr(self.atom, name) + def per_index_values(self): + """ + 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: + yield self._evaluator.eval_element(value) + def _values(self): """Returns a list of a list of node.""" if self.type == 'dict':