diff --git a/jedi/parsing.py b/jedi/parsing.py index a38b8746..b8419c26 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -439,9 +439,8 @@ class Parser(object): st = pr.Statement(self.module, src, [], [], [], toks, first_pos, self.end_pos) - for s in [st, middle, in_clause]: - s.parent = self.scope - tok = pr.ListComprehension(st, middle, in_clause) + tok = pr.ListComprehension(st, middle, in_clause, + self.scope) tok_list.append(tok) if list_comp: string = '' diff --git a/jedi/parsing_representation.py b/jedi/parsing_representation.py index cda636fd..b136fd4a 100644 --- a/jedi/parsing_representation.py +++ b/jedi/parsing_representation.py @@ -1166,12 +1166,23 @@ class Name(Simple): return len(self.names) -class ListComprehension(object): +class ListComprehension(Base): """ Helper class for list comprehensions """ - def __init__(self, stmt, middle, input): + def __init__(self, stmt, middle, input, parent): self.stmt = stmt self.middle = middle self.input = input + for s in [stmt, middle, input]: + s.parent = self + self.parent = parent + + @property + def start_pos(self): + return self.stmt.start_pos + + @property + def end_pos(self): + return self.stmt.end_pos def __repr__(self): return "<%s: %s>" % \