forked from VimPlug/jedi
start/end_pos refactored in parsing
This commit is contained in:
@@ -62,7 +62,7 @@ class NoErrorTokenizer(object):
|
|||||||
self.readline))
|
self.readline))
|
||||||
self.current = self.next()
|
self.current = self.next()
|
||||||
c = list(self.current)
|
c = list(self.current)
|
||||||
c[2] += self.line_offset, 0
|
c[2] = self.line_offset + c[2][0], c[2][1]
|
||||||
return c
|
return c
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1150,6 +1150,8 @@ class PyFuzzyParser(object):
|
|||||||
self.module = Module(module_path)
|
self.module = Module(module_path)
|
||||||
self.scope = self.module
|
self.scope = self.module
|
||||||
self.current = (None, None)
|
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
|
# Stuff to fix tokenize errors. The parser is pretty good in tolerating
|
||||||
# any errors of tokenize and just parse ahead.
|
# any errors of tokenize and just parse ahead.
|
||||||
@@ -1158,7 +1160,7 @@ class PyFuzzyParser(object):
|
|||||||
if tokenize_gen is None:
|
if tokenize_gen is None:
|
||||||
code = code + '\n' # end with \n, because the parser needs it
|
code = code + '\n' # end with \n, because the parser needs it
|
||||||
buf = StringIO(code)
|
buf = StringIO(code)
|
||||||
self.gen = common.NoErrorTokenizer(buf.readline)
|
self.gen = common.NoErrorTokenizer(buf.readline, line_offset)
|
||||||
else:
|
else:
|
||||||
self.gen = tokenize_gen
|
self.gen = tokenize_gen
|
||||||
self.parse()
|
self.parse()
|
||||||
@@ -1166,16 +1168,6 @@ class PyFuzzyParser(object):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<%s: %s>" % (type(self).__name__, self.module)
|
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):
|
def _check_user_stmt(self, simple):
|
||||||
if not isinstance(simple, Param):
|
if not isinstance(simple, Param):
|
||||||
for tok_name in self.module.temp_used_names:
|
for tok_name in self.module.temp_used_names:
|
||||||
@@ -1586,7 +1578,7 @@ class PyFuzzyParser(object):
|
|||||||
def __next__(self):
|
def __next__(self):
|
||||||
""" Generate the next tokenize pattern. """
|
""" Generate the next tokenize pattern. """
|
||||||
try:
|
try:
|
||||||
type, tok, self._tokenize_start_pos, self._tokenize_end_pos, \
|
type, tok, self.start_pos, self.end_pos, \
|
||||||
self.parserline = next(self.gen)
|
self.parserline = next(self.gen)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
# on finish, set end_pos correctly
|
# on finish, set end_pos correctly
|
||||||
|
|||||||
Reference in New Issue
Block a user