From f9fe6b47eb63edadb834d9bd191a27d1ef53efcd Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 2 Feb 2015 10:43:47 +0100 Subject: [PATCH] Fix error statement stacks positions. --- jedi/parser/__init__.py | 12 +++++++++--- jedi/parser/fast.py | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 808cfa6e..92f47455 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -50,10 +50,16 @@ def load_grammar(file='grammar3.4'): class ErrorStatement(object): - def __init__(self, stack, next_token, next_start_pos): + def __init__(self, stack, next_token, position_modifier, next_start_pos): self.stack = stack + self._position_modifier = position_modifier self.next_token = next_token - self.next_start_pos = next_start_pos + self._next_start_pos = next_start_pos + + @property + def next_start_pos(self): + s = self._next_start_pos + return s[0] + self._position_modifier.line, s[1] @property def first_pos(self): @@ -292,7 +298,7 @@ class Parser(object): if nodes and nodes[0] in ('def', 'class', 'lambda'): self.scope_names_stack.pop() if failed_stack: - err = ErrorStatement(failed_stack, value, start_pos) + err = ErrorStatement(failed_stack, value, self.position_modifier, start_pos) self.error_statement_stacks.append(err) self._last_failed_start_pos = start_pos diff --git a/jedi/parser/fast.py b/jedi/parser/fast.py index a3aa522d..fd60b8a6 100644 --- a/jedi/parser/fast.py +++ b/jedi/parser/fast.py @@ -404,7 +404,7 @@ class FastParser(use_metaclass(CachedFastParser)): return self._get_node(unicode(''), unicode(''), 0, [], False) added_newline = False - if source[-1] != '\n': + if not source or source[-1] != '\n': # To be compatible with Pythons grammar, we need a newline at the # end. The parser would handle it, but since the fast parser abuses # the normal parser in various ways, we need to care for this