summaryrefslogtreecommitdiffstats
path: root/Python/importdl.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-06-27 09:58:44 (GMT)
committerGitHub <noreply@github.com>2024-06-27 09:58:44 (GMT)
commit12af8ec864225248c3d2916cb142a5e7ee36cbe2 (patch)
treed29a5c87668a1cd1e67ceee0b9074ce7f2c74392 /Python/importdl.c
parent4999e0bda091826fcdf303dd439364e1d303a5ce (diff)
downloadcpython-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.c30
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;