From adcc1c2b51e1c242d070ab320d2a10ab5006ec8e Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 7 Jul 2016 18:28:51 +0200 Subject: [PATCH] Don't delete ErrorNode names. They are part of the parser now. Fixes #594 and possibly also #590 and #579. --- jedi/parser/__init__.py | 15 --------------- test/completion/invalid.py | 6 +++--- test/completion/usages.py | 6 +++--- test/test_parser/test_parser.py | 5 +++++ 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 3d92b70b..0d842411 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -350,21 +350,6 @@ class ParserWithRecovery(Parser): stack[-1][2][1].append(error_leaf) def _stack_removal(self, grammar, stack, arcs, start_index, value, start_pos): - def clear_names(children): - for c in children: - try: - clear_names(c.children) - except AttributeError: - if isinstance(c, pt.Name): - try: - self._scope_names_stack[-1][c.value].remove(c) - self._used_names[c.value].remove(c) - except ValueError: - pass # This may happen with CompFor. - - for dfa, state, node in stack[start_index:]: - clear_names(children=node[1]) - failed_stack = [] found = False all_nodes = [] diff --git a/test/completion/invalid.py b/test/completion/invalid.py index 7e952cf2..7c047e66 100644 --- a/test/completion/invalid.py +++ b/test/completion/invalid.py @@ -176,16 +176,16 @@ import datetime as call = '' invalid = .call -#? +#? invalid invalid = call?.call -#? +#? str() invalid # comma invalid = ,call -#? +#? str() invalid diff --git a/test/completion/usages.py b/test/completion/usages.py index c5688f77..abf788be 100644 --- a/test/completion/usages.py +++ b/test/completion/usages.py @@ -3,10 +3,10 @@ Renaming tests. This means search for usages. I always leave a little bit of space to add room for additions, because the results always contain position informations. """ -#< 4 (0,4), (3,0), (5,0), (17,0) +#< 4 (0,4), (3,0), (5,0), (17,0), (12,4), (14,5), (15,0) def abc(): pass -#< 0 (-3,4), (0,0), (2,0), (14,0) +#< 0 (-3,4), (0,0), (2,0), (14,0), (9,4), (11,5), (12,0) abc.d.a.bsaasd.abc.d abc @@ -20,7 +20,7 @@ if 1: else: (abc) = abc = -#< (-17,4), (-14,0), (-12,0), (0,0) +#< (-17,4), (-14,0), (-12,0), (0,0), (-2,0), (-3,5), (-5,4) abc abc = 5 diff --git a/test/test_parser/test_parser.py b/test/test_parser/test_parser.py index 74cac4b5..f7de429c 100644 --- a/test/test_parser/test_parser.py +++ b/test/test_parser/test_parser.py @@ -213,3 +213,8 @@ def test_backslash_dos_style(): grammar = load_grammar() m = ParserWithRecovery(grammar, u('\\\r\n')).module assert m + + +def test_started_lambda_stmt(): + p = ParserWithRecovery(load_grammar(), 'lambda a, b: a i') + assert p.get_parsed_node().children[0].type == 'error_node'