diff options
author | Victor Stinner <vstinner@python.org> | 2024-06-27 09:58:44 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-27 09:58:44 (GMT) |
commit | 12af8ec864225248c3d2916cb142a5e7ee36cbe2 (patch) | |
tree | d29a5c87668a1cd1e67ceee0b9074ce7f2c74392 /Python/importdl.c | |
parent | 4999e0bda091826fcdf303dd439364e1d303a5ce (diff) | |
download | cpython-12af8ec864225248c3d2916cb142a5e7ee36cbe2.zip cpython-12af8ec864225248c3d2916cb142a5e7ee36cbe2.tar.gz cpython-12af8ec864225248c3d2916cb142a5e7ee36cbe2.tar.bz2 |
gh-121040: Use __attribute__((fallthrough)) (#121044)
Fix warnings when using -Wimplicit-fallthrough compiler flag.
Annotate explicitly "fall through" switch cases with a new
_Py_FALLTHROUGH macro which uses __attribute__((fallthrough)) if
available. Replace "fall through" comments with _Py_FALLTHROUGH.
Add _Py__has_attribute() macro. No longer define __has_attribute()
macro if it's not defined. Move also _Py__has_builtin() at the top
of pyport.h.
Co-Authored-By: Nikita Sobolev <mail@sobolevn.me>
Diffstat (limited to 'Python/importdl.c')
-rw-r--r-- | Python/importdl.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/Python/importdl.c b/Python/importdl.c index 7c42d37..9646483 100644 --- a/Python/importdl.c +++ b/Python/importdl.c @@ -248,14 +248,14 @@ _Py_ext_module_loader_result_set_error( { #ifndef NDEBUG switch (kind) { - case _Py_ext_module_loader_result_EXCEPTION: /* fall through */ + case _Py_ext_module_loader_result_EXCEPTION: _Py_FALLTHROUGH; case _Py_ext_module_loader_result_ERR_UNREPORTED_EXC: assert(PyErr_Occurred()); break; - case _Py_ext_module_loader_result_ERR_MISSING: /* fall through */ - case _Py_ext_module_loader_result_ERR_UNINITIALIZED: /* fall through */ - case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: /* fall through */ - case _Py_ext_module_loader_result_ERR_NOT_MODULE: /* fall through */ + case _Py_ext_module_loader_result_ERR_MISSING: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_UNINITIALIZED: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NOT_MODULE: _Py_FALLTHROUGH; case _Py_ext_module_loader_result_ERR_MISSING_DEF: assert(!PyErr_Occurred()); break; @@ -279,11 +279,11 @@ _Py_ext_module_loader_result_set_error( res->kind = _Py_ext_module_kind_INVALID; break; /* None of the rest affect the result kind. */ - case _Py_ext_module_loader_result_EXCEPTION: /* fall through */ - case _Py_ext_module_loader_result_ERR_MISSING: /* fall through */ - case _Py_ext_module_loader_result_ERR_UNREPORTED_EXC: /* fall through */ - case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: /* fall through */ - case _Py_ext_module_loader_result_ERR_NOT_MODULE: /* fall through */ + case _Py_ext_module_loader_result_EXCEPTION: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_MISSING: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_UNREPORTED_EXC: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NOT_MODULE: _Py_FALLTHROUGH; case _Py_ext_module_loader_result_ERR_MISSING_DEF: break; default: @@ -307,14 +307,14 @@ _Py_ext_module_loader_result_apply_error( #ifndef NDEBUG switch (err.kind) { - case _Py_ext_module_loader_result_EXCEPTION: /* fall through */ + case _Py_ext_module_loader_result_EXCEPTION: _Py_FALLTHROUGH; case _Py_ext_module_loader_result_ERR_UNREPORTED_EXC: assert(err.exc != NULL); break; - case _Py_ext_module_loader_result_ERR_MISSING: /* fall through */ - case _Py_ext_module_loader_result_ERR_UNINITIALIZED: /* fall through */ - case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: /* fall through */ - case _Py_ext_module_loader_result_ERR_NOT_MODULE: /* fall through */ + case _Py_ext_module_loader_result_ERR_MISSING: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_UNINITIALIZED: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE: _Py_FALLTHROUGH; + case _Py_ext_module_loader_result_ERR_NOT_MODULE: _Py_FALLTHROUGH; case _Py_ext_module_loader_result_ERR_MISSING_DEF: assert(err.exc == NULL); break; |