mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Replace noop constant statement with expression
* Constant statements will be ignored and the compiler will emit a SyntaxWarning. * Replace constant statement (ex: "1") with an expression statement (ex: "x=1"). * test_traceback: use context manager on the file. Issue #26204.
This commit is contained in:
parent
f089196beb
commit
51d8c526d5
5 changed files with 23 additions and 20 deletions
|
|
@ -401,7 +401,7 @@ class TestRetrievingSourceCode(GetSourceBase):
|
|||
self.assertEqual(normcase(inspect.getsourcefile(mod.spam)), modfile)
|
||||
self.assertEqual(normcase(inspect.getsourcefile(git.abuse)), modfile)
|
||||
fn = "_non_existing_filename_used_for_sourcefile_test.py"
|
||||
co = compile("None", fn, "exec")
|
||||
co = compile("x=1", fn, "exec")
|
||||
self.assertEqual(inspect.getsourcefile(co), None)
|
||||
linecache.cache[co.co_filename] = (1, None, "None", co.co_filename)
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
import dis
|
||||
import re
|
||||
import sys
|
||||
from io import StringIO
|
||||
import textwrap
|
||||
import unittest
|
||||
from math import copysign
|
||||
|
||||
from test.bytecode_helper import BytecodeTestCase
|
||||
|
||||
|
|
@ -30,22 +29,25 @@ class TestTranforms(BytecodeTestCase):
|
|||
|
||||
def test_global_as_constant(self):
|
||||
# LOAD_GLOBAL None/True/False --> LOAD_CONST None/True/False
|
||||
def f(x):
|
||||
None
|
||||
None
|
||||
def f():
|
||||
x = None
|
||||
x = None
|
||||
return x
|
||||
def g(x):
|
||||
True
|
||||
def g():
|
||||
x = True
|
||||
return x
|
||||
def h(x):
|
||||
False
|
||||
def h():
|
||||
x = False
|
||||
return x
|
||||
|
||||
for func, elem in ((f, None), (g, True), (h, False)):
|
||||
self.assertNotInBytecode(func, 'LOAD_GLOBAL')
|
||||
self.assertInBytecode(func, 'LOAD_CONST', elem)
|
||||
|
||||
def f():
|
||||
'Adding a docstring made this test fail in Py2.5.0'
|
||||
return None
|
||||
|
||||
self.assertNotInBytecode(f, 'LOAD_GLOBAL')
|
||||
self.assertInBytecode(f, 'LOAD_CONST', None)
|
||||
|
||||
|
|
|
|||
|
|
@ -230,7 +230,8 @@ class TestSupport(unittest.TestCase):
|
|||
|
||||
def test_check_syntax_error(self):
|
||||
support.check_syntax_error(self, "def class")
|
||||
self.assertRaises(AssertionError, support.check_syntax_error, self, "1")
|
||||
with self.assertRaises(AssertionError):
|
||||
support.check_syntax_error(self, "x=1")
|
||||
|
||||
def test_CleanImport(self):
|
||||
import importlib
|
||||
|
|
|
|||
|
|
@ -338,8 +338,8 @@ class TraceTestCase(unittest.TestCase):
|
|||
|
||||
def test_14_onliner_if(self):
|
||||
def onliners():
|
||||
if True: False
|
||||
else: True
|
||||
if True: x=False
|
||||
else: x=True
|
||||
return 0
|
||||
self.run_and_compare(
|
||||
onliners,
|
||||
|
|
|
|||
|
|
@ -129,12 +129,12 @@ class SyntaxTracebackCases(unittest.TestCase):
|
|||
def do_test(firstlines, message, charset, lineno):
|
||||
# Raise the message in a subprocess, and catch the output
|
||||
try:
|
||||
output = open(TESTFN, "w", encoding=charset)
|
||||
output.write("""{0}if 1:
|
||||
import traceback;
|
||||
raise RuntimeError('{1}')
|
||||
""".format(firstlines, message))
|
||||
output.close()
|
||||
with open(TESTFN, "w", encoding=charset) as output:
|
||||
output.write("""{0}if 1:
|
||||
import traceback;
|
||||
raise RuntimeError('{1}')
|
||||
""".format(firstlines, message))
|
||||
|
||||
process = subprocess.Popen([sys.executable, TESTFN],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
stdout, stderr = process.communicate()
|
||||
|
|
@ -176,7 +176,7 @@ class SyntaxTracebackCases(unittest.TestCase):
|
|||
do_test(" \t\f\n# coding: {0}\n".format(charset),
|
||||
text, charset, 5)
|
||||
# Issue #18960: coding spec should has no effect
|
||||
do_test("0\n# coding: GBK\n", "h\xe9 ho", 'utf-8', 5)
|
||||
do_test("x=0\n# coding: GBK\n", "h\xe9 ho", 'utf-8', 5)
|
||||
|
||||
def test_print_traceback_at_exit(self):
|
||||
# Issue #22599: Ensure that it is possible to use the traceback module
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue