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'):