diff options
author | Lysandros Nikolaou <lisandrosnik@gmail.com> | 2020-10-31 19:06:03 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-31 19:06:03 (GMT) |
commit | cfcb952e30e01d7cce430829af8edc7afc94e0b1 (patch) | |
tree | 8a171bdafe7537ffc636aee5ee76afe9e5562a9b /Lib/test/test_syntax.py | |
parent | dbaa07db671c4e5842629c8be912f2b0370be794 (diff) | |
download | cpython-cfcb952e30e01d7cce430829af8edc7afc94e0b1.zip cpython-cfcb952e30e01d7cce430829af8edc7afc94e0b1.tar.gz cpython-cfcb952e30e01d7cce430829af8edc7afc94e0b1.tar.bz2 |
[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 02cdfc93f82fecdb7eae97a868d4ee222b9875d9)
Automerge-Triggered-By: GH:lysnikolaou
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r-- | Lib/test/test_syntax.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index a95992d..1336231 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -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 |