From 109fdc53e00fb571277f4b3c620147d3b8b21a66 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 5 Feb 2015 01:13:00 +0100 Subject: [PATCH] Fix the remaining fast parser issues. --- jedi/parser/__init__.py | 5 ++++- jedi/parser/tree.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 3b6cd45f..ed8e0b9d 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -351,8 +351,11 @@ class Parser(object): if newline.value == '': # Must be a DEDENT, just continue. newline = newline.get_previous() + elif newline.value != '\n': + # This may happen if error correction strikes and removes + # a whole statement including '\n'. + break else: - assert newline.value == '\n' newline.value = '' if self._last_failed_start_pos > newline._start_pos: # It may be the case that there was a syntax error in a diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index b68fa071..dd26e31d 100644 --- a/jedi/parser/tree.py +++ b/jedi/parser/tree.py @@ -66,7 +66,7 @@ class DocstringMixin(object): if isinstance(self, SubModule): stmt = self.children[0] else: - stmt = self.children[-1] + stmt = self.children[self.children.index(':') + 1] if is_node(stmt, 'suite'): # Normally a suite stmt = stmt.children[2] # -> NEWLINE INDENT stmt if is_node(stmt, 'simple_stmt'):