1
0
forked from VimPlug/jedi

Fix an issue with open parentheses and function definitions right after. The fast parser should behave like the normal one and just ignore the open brackets.

This commit is contained in:
Dave Halter
2015-02-19 11:02:11 +01:00
parent 9d048623dd
commit ce96af5e04
2 changed files with 12 additions and 2 deletions

View File

@@ -382,7 +382,7 @@ class FastParser(use_metaclass(CachedFastParser)):
line_offset, nodes) line_offset, nodes)
last_end_line = self.current_node.parser.module.end_pos[0] last_end_line = self.current_node.parser.module.end_pos[0]
debug.dbg('While parsing %s, line %s slowed down the fast parser', debug.dbg('While parsing %s, line %s slowed down the fast parser.',
self.module_path, line_offset) self.module_path, line_offset)
line_offset = next_line_offset line_offset = next_line_offset
@@ -488,6 +488,16 @@ class FastTokenizer(object):
self._closed = True self._closed = True
return current return current
if value in ('def', 'class') and self._parentheses_level \
and re.match('\n[ \t]*\Z', prefix):
# Account for the fact that an open parentheses before a function
# will reset the parentheses counter, but new lines before will
# still be ignored. So check the prefix.
# TODO what about flow parentheses counter resets in the tokenizer?
self._parentheses_level = 0
return self._close()
# Parentheses ignore the indentation rules. The other three stand for # Parentheses ignore the indentation rules. The other three stand for
# new lines. # new lines.
if self.previous[0] in (NEWLINE, INDENT, DEDENT) \ if self.previous[0] in (NEWLINE, INDENT, DEDENT) \

View File

@@ -333,7 +333,7 @@ def test_open_parentheses():
cache.save_parser(None, None, p, pickling=False) cache.save_parser(None, None, p, pickling=False)
# Now with a correct parser it should work perfectly well. # Now with a correct parser it should work perfectly well.
check_fp('isinstance()\n' + func, 1) check_fp('isinstance()\n' + func, 1, 2)
def test_strange_parentheses(): def test_strange_parentheses():