diff --git a/jedi/parser/fast.py b/jedi/parser/fast.py index 055bfa39..70295c6a 100644 --- a/jedi/parser/fast.py +++ b/jedi/parser/fast.py @@ -58,9 +58,9 @@ def suite_or_file_input_is_valid(grammar, stack): return False for dfa, newstate, (symbol_number, nodes) in reversed(stack): - if symbol_number == grammar.symbol2number['suite']: - # If we don't have nodes already, the suite is not valid. - return bool(nodes) + if grammar.number2symbol[symbol_number] == 'suite': + # If only newline is in the suite, the suite is not valid, yet. + return len(nodes) > 1 # Not reaching a suite means that we're dealing with file_input levels # where there's no need for a valid statement in it. It can also be empty. return True diff --git a/test/test_parser/test_diff_parser.py b/test/test_parser/test_diff_parser.py index 519d5b87..1b0002ca 100644 --- a/test/test_parser/test_diff_parser.py +++ b/test/test_parser/test_diff_parser.py @@ -200,7 +200,7 @@ def test_for_on_one_line(differ): """) # The second parser is for parsing the `def nested()` which is an `equal` # operation in the SequenceMatcher. - differ.parse(src, parsers=2, copies=1) + differ.parse(src, parsers=1, copies=1) def test_open_parentheses(differ): @@ -208,7 +208,7 @@ def test_open_parentheses(differ): code = u('isinstance(\n\n' + func) differ.initialize(code) - differ.parse('isinstance(\n' + func, copies=1, parsers=1) + differ.parse('isinstance(\n' + func, parsers=1, allow_error_leafs=True) def test_backslash(differ): @@ -238,4 +238,4 @@ def test_backslash(differ): def second(): pass """) - differ.parse(src, parsers=2) + differ.parse(src, parsers=1)