diff options
author | Petr Viktorin <encukou@gmail.com> | 2021-04-23 12:14:00 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-23 12:14:00 (GMT) |
commit | e7cc64e297001cc79b9afab80f71d9e6d1267cb7 (patch) | |
tree | da9243efa3082d9886d592588f0dbac062e428de /Include | |
parent | 90d02e5e63e2cb8f66a2c0dd2ea8d7d4f45f4ebf (diff) | |
download | cpython-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')
-rw-r--r-- | Include/boolobject.h | 3 | ||||
-rw-r--r-- | Include/pyport.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/Include/boolobject.h b/Include/boolobject.h index e1c8699..cda6f89 100644 --- a/Include/boolobject.h +++ b/Include/boolobject.h @@ -15,7 +15,8 @@ PyAPI_DATA(PyTypeObject) PyBool_Type; Don't forget to apply Py_INCREF() when returning either!!! */ /* Don't use these directly */ -PyAPI_DATA(struct _longobject) _Py_FalseStruct, _Py_TrueStruct; +PyAPI_DATA(struct _longobject) _Py_FalseStruct; +PyAPI_DATA(struct _longobject) _Py_TrueStruct; /* Use these macros */ #define Py_False ((PyObject *) &_Py_FalseStruct) 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 |