]> git.ipfire.org Git - thirdparty/git.git/commit - fsck.c
consistently use "fallthrough" comments in switches
authorJeff King <peff@peff.net>
Thu, 21 Sep 2017 06:25:41 +0000 (02:25 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Sep 2017 03:49:57 +0000 (12:49 +0900)
commit1cf01a34eaccd6da613dba82291666db237916ab
tree53db8e7f6b3d291fe65c3ebeac3541877426880c
parentd0e9983980a25e0c398cc03342e5ad22ef85b8a8
consistently use "fallthrough" comments in switches

Gcc 7 adds -Wimplicit-fallthrough, which can warn when a
switch case falls through to the next case. The general idea
is that the compiler can't tell if this was intentional or
not, so you should annotate any intentional fall-throughs as
such, leaving it to complain about any unannotated ones.

There's a GNU __attribute__ which can be used for
annotation, but of course we'd have to #ifdef it away on
non-gcc compilers. Gcc will also recognize
specially-formatted comments, which matches our current
practice. Let's extend that practice to all of the
unannotated sites (which I did look over and verify that
they were behaving as intended).

Ideally in each case we'd actually give some reasons in the
comment about why we're falling through, or what we're
falling through to. And gcc does support that with
-Wimplicit-fallthrough=2, which relaxes the comment pattern
matching to anything that contains "fallthrough" (or a
variety of spelling variants). However, this isn't the
default for -Wimplicit-fallthrough, nor for -Wextra. In the
name of simplicity, it's probably better for us to support
the default level, which requires "fallthrough" to be the
only thing in the comment (modulo some window dressing like
"else" and some punctuation; see the gcc manual for the
complete set of patterns).

This patch suppresses all warnings due to
-Wimplicit-fallthrough. We might eventually want to add that
to the DEVELOPER Makefile knob, but we should probably wait
until gcc 7 is more widely adopted (since earlier versions
will complain about the unknown warning type).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 files changed:
apply.c
builtin/cat-file.c
builtin/checkout.c
builtin/remote-ext.c
builtin/submodule--helper.c
config.c
convert.c
fsck.c
http-push.c
mailinfo.c
quote.c
read-cache.c
send-pack.c