[3.9] bpo-42218: Correctly handle errors in left-recursive rules (GH-23065) (GH-23066)

Left-recursive rules need to check for errors explicitly, since
even if the rule returns NULL, the parsing might continue and lead
to long-distance failures.

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
(cherry picked from commit 02cdfc93f8)

Automerge-Triggered-By: GH:lysnikolaou
This commit is contained in:
Lysandros Nikolaou 2020-10-31 21:06:03 +02:00 committed by GitHub
parent dbaa07db67
commit cfcb952e30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 0 deletions

View file

@ -964,6 +964,14 @@ def func2():
"""
self._check_error(code, "invalid syntax")
def test_invalid_line_continuation_left_recursive(self):
# Check bpo-42218: SyntaxErrors following left-recursive rules
# (t_primary_raw in this case) need to be tested explicitly
self._check_error("A.\u018a\\ ",
"unexpected character after line continuation character")
self._check_error("A.\u03bc\\\n",
"unexpected EOF while parsing")
def test_main():
support.run_unittest(SyntaxTestCase)
from test import test_syntax