gh-119555: catch SyntaxError from compile() in the InteractiveColoredConsole (#119557)

This commit is contained in:
Sergey B Kirpichev 2024-05-29 09:57:50 +03:00 committed by GitHub
parent c0faade891
commit 86d1a1aa88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 1 deletions

View file

@ -101,7 +101,7 @@ def runsource(self, source, filename="<input>", symbol="single"):
item = wrapper([stmt]) item = wrapper([stmt])
try: try:
code = compile(item, filename, the_symbol, dont_inherit=True) code = compile(item, filename, the_symbol, dont_inherit=True)
except (OverflowError, ValueError): except (OverflowError, ValueError, SyntaxError):
self.showsyntaxerror(filename) self.showsyntaxerror(filename)
return False return False

View file

@ -94,6 +94,14 @@ def test_runsource_shows_syntax_error_for_failed_compilation(self):
with patch.object(console, "showsyntaxerror") as mock_showsyntaxerror: with patch.object(console, "showsyntaxerror") as mock_showsyntaxerror:
console.runsource(source) console.runsource(source)
mock_showsyntaxerror.assert_called_once() mock_showsyntaxerror.assert_called_once()
source = dedent("""\
match 1:
case {0: _, 0j: _}:
pass
""")
with patch.object(console, "showsyntaxerror") as mock_showsyntaxerror:
console.runsource(source)
mock_showsyntaxerror.assert_called_once()
def test_no_active_future(self): def test_no_active_future(self):
console = InteractiveColoredConsole() console = InteractiveColoredConsole()

View file

@ -0,0 +1,2 @@
Catch :exc:`SyntaxError` from :func:`compile` in the runsource() method of
the InteractiveColoredConsole. Patch by Sergey B Kirpichev.