From f760a7755de13e022e6ae179eb8175ea4287790a Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Wed, 12 Nov 2014 12:30:59 +0100 Subject: [PATCH] Nested list comprehensions seem to be working pretty well. --- jedi/evaluate/iterable.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 0f469cbd..983ad0a5 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -135,8 +135,17 @@ class Comprehension(IterableWrapper): [x + 1 for x in foo] """ comprehension = self._atom.children[1] - c = comprehension.children - return helpers.deep_ast_copy(c[0], {comprehension: c[1]}) + # For nested comprehensions we need to search the last one. + last = comprehension.children[-1] + last_comp = comprehension.children[1] + while True: + if isinstance(last, pr.CompFor): + last_comp = last + elif not pr.is_node(last, 'comp_if'): + break + last = last.children[-1] + + return helpers.deep_ast_copy(comprehension.children[0], {comprehension: last_comp}) def __repr__(self): return "" % (type(self).__name__, self._atom)