summaryrefslogtreecommitdiffstats
path: root/Include/pyport.h
diff options
context:
space:
mode:
authorPetr Viktorin <encukou@gmail.com>2021-04-23 12:14:00 (GMT)
committerGitHub <noreply@github.com>2021-04-23 12:14:00 (GMT)
commite7cc64e297001cc79b9afab80f71d9e6d1267cb7 (patch)
treeda9243efa3082d9886d592588f0dbac062e428de /Include/pyport.h
parent90d02e5e63e2cb8f66a2c0dd2ea8d7d4f45f4ebf (diff)
downloadcpython-e7cc64e297001cc79b9afab80f71d9e6d1267cb7.zip
cpython-e7cc64e297001cc79b9afab80f71d9e6d1267cb7.tar.gz
cpython-e7cc64e297001cc79b9afab80f71d9e6d1267cb7.tar.bz2
bpo-43795: PEP-652: Simplify headers for easier static analysis (GH-25483)
As part of the PEP-652 implementation, I'll tighten the CI check for functions/data defined with `Py_LIMITED_API`. Discussion in https://discuss.python.org/t/pep-652-maintaining-the-stable-abi/6986 suggests that parsing C headers is OK (though personally I'd rather generate it...), but writing a full C parser is a monumental task and adding an existing one as a dependency brings too many vendoring/bootstraping issues. So, for the check I'll use a "simple" regex on preprocessor output, and adapt the few trivial places where the regex won't work. - Keep declarations in the limited API to one item per line - Make it possible to override `_Py_NO_RETURN`, so the annotation can be removed from preprocessor output. https://bugs.python.org/issue43795
Diffstat (limited to 'Include/pyport.h')
-rw-r--r--Include/pyport.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/Include/pyport.h b/Include/pyport.h
index fe27fbc..6ab0ae4 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -861,6 +861,7 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void);
XLC support is intentionally omitted due to bpo-40244 */
+#ifndef _Py_NO_RETURN
#if defined(__clang__) || \
(defined(__GNUC__) && \
((__GNUC__ >= 3) || \
@@ -871,6 +872,7 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
#else
# define _Py_NO_RETURN
#endif
+#endif
// Preprocessor check for a builtin preprocessor function. Always return 0