compiler: don't emit SyntaxWarning on const stmt
Issue #26204: the compiler doesn't emit SyntaxWarning warnings anymore when
constant statements are ignored.
diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py
index 2cf088c..21b12a5 100644
--- a/Lib/test/test_code.py
+++ b/Lib/test/test_code.py
@@ -66,6 +66,24 @@
flags: 67
consts: ('None',)
+>>> def optimize_away():
+... 'doc string'
+... 'not a docstring'
+... 53
+... 0x53
+
+>>> dump(optimize_away.__code__)
+name: optimize_away
+argcount: 0
+kwonlyargcount: 0
+names: ()
+varnames: ()
+cellvars: ()
+freevars: ()
+nlocals: 0
+flags: 67
+consts: ("'doc string'", 'None')
+
>>> def keywordonly_args(a,b,*,k1):
... return a,b,k1
...
@@ -84,10 +102,8 @@
"""
-import textwrap
import unittest
import weakref
-import warnings
from test.support import run_doctest, run_unittest, cpython_only
@@ -118,44 +134,6 @@
self.assertEqual(co.co_name, "funcname")
self.assertEqual(co.co_firstlineno, 15)
- def dump(self, co):
- dump = {}
- for attr in ["name", "argcount", "kwonlyargcount", "names", "varnames",
- "cellvars", "freevars", "nlocals", "flags"]:
- dump[attr] = getattr(co, "co_" + attr)
- dump['consts'] = tuple(consts(co.co_consts))
- return dump
-
- def test_optimize_away(self):
- ns = {}
- with warnings.catch_warnings():
- warnings.filterwarnings('ignore', category=SyntaxWarning)
- exec(textwrap.dedent('''
- def optimize_away():
- 'doc string'
- 'not a docstring'
- 53
- 0x53
- b'bytes'
- 1.0
- True
- False
- None
- ...
- '''), ns)
-
- self.assertEqual(self.dump(ns['optimize_away'].__code__),
- {'name': 'optimize_away',
- 'argcount': 0,
- 'kwonlyargcount': 0,
- 'names': (),
- 'varnames': (),
- 'cellvars': (),
- 'freevars': (),
- 'nlocals': 0,
- 'flags': 67,
- 'consts': ("'doc string'", 'None')})
-
class CodeWeakRefTest(unittest.TestCase):