From b0386d9c74c4b8710389f393a5dcbcb338ebefad Mon Sep 17 00:00:00 2001 From: David Halter Date: Thu, 13 Dec 2012 19:57:44 +0100 Subject: [PATCH] start/end_pos refactored in parsing --- jedi/common.py | 2 +- jedi/parsing.py | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/jedi/common.py b/jedi/common.py index 32294ebd..5c42e0b0 100644 --- a/jedi/common.py +++ b/jedi/common.py @@ -62,7 +62,7 @@ class NoErrorTokenizer(object): self.readline)) self.current = self.next() c = list(self.current) - c[2] += self.line_offset, 0 + c[2] = self.line_offset + c[2][0], c[2][1] return c diff --git a/jedi/parsing.py b/jedi/parsing.py index c14cee12..e5c32754 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -1150,6 +1150,8 @@ class PyFuzzyParser(object): self.module = Module(module_path) self.scope = self.module self.current = (None, None) + self.start_pos = 1, 0 + self.end_pos = 1, 0 # Stuff to fix tokenize errors. The parser is pretty good in tolerating # any errors of tokenize and just parse ahead. @@ -1158,7 +1160,7 @@ class PyFuzzyParser(object): if tokenize_gen is None: code = code + '\n' # end with \n, because the parser needs it buf = StringIO(code) - self.gen = common.NoErrorTokenizer(buf.readline) + self.gen = common.NoErrorTokenizer(buf.readline, line_offset) else: self.gen = tokenize_gen self.parse() @@ -1166,16 +1168,6 @@ class PyFuzzyParser(object): def __repr__(self): return "<%s: %s>" % (type(self).__name__, self.module) - @property - def start_pos(self): - return (self._line_offset + self._tokenize_start_pos[0], - self._tokenize_start_pos[1]) - - @property - def end_pos(self): - return (self._line_offset + self._tokenize_end_pos[0], - self._tokenize_end_pos[1]) - def _check_user_stmt(self, simple): if not isinstance(simple, Param): for tok_name in self.module.temp_used_names: @@ -1586,7 +1578,7 @@ class PyFuzzyParser(object): def __next__(self): """ Generate the next tokenize pattern. """ try: - type, tok, self._tokenize_start_pos, self._tokenize_end_pos, \ + type, tok, self.start_pos, self.end_pos, \ self.parserline = next(self.gen) except StopIteration: # on finish, set end_pos correctly