bpo-41520: codeop no longer ignores SyntaxWarning (GH-21838)

This commit is contained in:
Victor Stinner 2020-08-12 14:53:28 +02:00 committed by GitHub
parent 0e95bbf085
commit 369a1cbdee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 2 deletions

View File

@ -84,9 +84,11 @@ def _maybe_compile(compiler, source, filename, symbol):
except SyntaxError:
pass
# Suppress warnings after the first compile to avoid duplication.
# Catch syntax warnings after the first compile
# to emit SyntaxWarning at most once.
with warnings.catch_warnings():
warnings.simplefilter("ignore")
warnings.simplefilter("error", SyntaxWarning)
try:
code1 = compiler(source + "\n", filename, symbol)
except SyntaxError as e:

View File

@ -4,6 +4,7 @@
"""
import sys
import unittest
import warnings
from test import support
from test.support import warnings_helper
@ -310,5 +311,11 @@ class CodeopTests(unittest.TestCase):
compile_command("0 is 0")
self.assertEqual(len(w.warnings), 1)
# bpo-41520: check SyntaxWarning treated as an SyntaxError
with self.assertRaises(SyntaxError):
warnings.simplefilter('error', SyntaxWarning)
compile_command('1 is 1\n', symbol='exec')
if __name__ == "__main__":
unittest.main()

View File

@ -0,0 +1 @@
Fix :mod:`codeop` regression: it no longer ignores :exc:`SyntaxWarning`.