mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
gh-92135: Fix _Py_reinterpret_cast() for const (#92138)
Fix C++ compiler warnings on cast macros, like _PyObject_CAST(), when casting a constant expression to a non constant type: use const_cast<> in C++. * In C++, Py_SAFE_DOWNCAST() now uses static_cast<> rather than reinterpret_cast<>. * Add tests to the _testcppext C++ extension. * test_cppext no longer captures stdout in verbose mode.
This commit is contained in:
parent
b11243e85e
commit
031397063e
5 changed files with 62 additions and 14 deletions
|
@ -1,5 +1,6 @@
|
|||
# gh-91321: Build a basic C++ test extension to check that the Python C API is
|
||||
# compatible with C++ and does not emit C++ compiler warnings.
|
||||
import contextlib
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
@ -39,17 +40,24 @@ class TestCPPExt(unittest.TestCase):
|
|||
sources=[SOURCE],
|
||||
language='c++',
|
||||
extra_compile_args=CPPFLAGS)
|
||||
capture_stdout = (not support.verbose)
|
||||
|
||||
try:
|
||||
try:
|
||||
with (support.captured_stdout() as stdout,
|
||||
support.swap_attr(sys, 'argv', ['setup.py', 'build_ext'])):
|
||||
if capture_stdout:
|
||||
stdout = support.captured_stdout()
|
||||
else:
|
||||
print()
|
||||
stdout = contextlib.nullcontext()
|
||||
with (stdout,
|
||||
support.swap_attr(sys, 'argv', ['setup.py', 'build_ext', '--verbose'])):
|
||||
setup(name="_testcppext", ext_modules=[cpp_ext])
|
||||
return
|
||||
except:
|
||||
# Show output on error
|
||||
print()
|
||||
print(stdout.getvalue())
|
||||
if capture_stdout:
|
||||
# Show output on error
|
||||
print()
|
||||
print(stdout.getvalue())
|
||||
raise
|
||||
except SystemExit:
|
||||
self.fail("Build failed")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue