From 1725abb1fd6fbd87b25b3158f6c3a74721d2d418 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Wed, 3 Dec 2014 20:30:03 +0100 Subject: [PATCH] Fix issues with docstrings. --- jedi/evaluate/__init__.py | 3 +++ jedi/evaluate/docstrings.py | 4 ++-- jedi/evaluate/iterable.py | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 21faa1a7..af61266d 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -201,6 +201,9 @@ class Evaluator(object): # `x if foo else y` case. return (self.eval_element(element.children[0]) + self.eval_element(element.children[-1])) + elif element.type == 'operator': + # Must be an ellipsis, other operators are not evaluated. + return [] # Ignore for now. elif element.type == 'dotted_name': types = self._eval_atom(element.children[0]) for next_name in element.children[2::2]: diff --git a/jedi/evaluate/docstrings.py b/jedi/evaluate/docstrings.py index c86a6931..7b1a5c6a 100644 --- a/jedi/evaluate/docstrings.py +++ b/jedi/evaluate/docstrings.py @@ -128,8 +128,8 @@ def _evaluate_for_statement_string(evaluator, string, module): string = 'import %s\n' % element + string p = Parser(evaluator.grammar, code % indent_block(string)) - pseudo_cls = p.module.subscopes[0] try: + pseudo_cls = p.module.subscopes[0] stmt = pseudo_cls.statements[-1] except IndexError: return [] @@ -161,7 +161,7 @@ def _execute_array_values(evaluator, array): values = [] for typ in array.values(): objects = _execute_array_values(evaluator, typ) - values.append([AlreadyEvaluated(objects)]) + values.append(AlreadyEvaluated(objects)) return [FakeSequence(evaluator, values, array.type)] else: return evaluator.execute(array) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 4c26240d..3dbe1b57 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -335,8 +335,8 @@ class FakeSequence(_FakeArray): return self._sequence_values def get_exact_index_types(self, index): - return list(chain.from_iterable(self._evaluator.eval_element(v) - for v in self._sequence_values[index])) + value = self._sequence_values[index] + return self._evaluator.eval_element(value) class AlreadyEvaluated(frozenset):