Don't delete ErrorNode names. They are part of the parser now.

Fixes #594 and possibly also #590 and #579.
This commit is contained in:
Dave Halter
2016-07-07 18:28:51 +02:00
parent 4a19376187
commit adcc1c2b51
4 changed files with 11 additions and 21 deletions

View File

@@ -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 = []

View File

@@ -180,12 +180,12 @@ invalid = .call
invalid
invalid = call?.call
#?
#? str()
invalid
# comma
invalid = ,call
#?
#? str()
invalid

View File

@@ -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

View File

@@ -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'