[clang] [clang][Sema] Add -Wswitch-default warning option (PR #73077)

Aaron Puchert via cfe-commits cfe-commits at lists.llvm.org
Sun Dec 3 15:55:54 PST 2023


aaronpuchert wrote:

> There is one clang-tidy check (bugprone-switch-missing-default-case) also for this feature.

This excludes enumeration types though, while GCC `-Wswitch-default` warns on them as well. (Even if all enumeration values are covered.)

> whether switch statements should have a default is not something the industry seem to agree on, so it would be a very opinionated warning.

Yes. Though I have to say, even though I'm squarely in the `-Wcovered-switch-default` camp (i.e. no `default` label in switches that cover all enumeration values), I think it's still valuable to have this warning because some style guides/policies demand a `default`, and it is very little effort on our side to maintain this.

I understand the policy against off-by-default warnings to avoid crowding the core compiler, but this is essentially just two lines of code, and if GCC has it we're not going out on a limb here. And since we already seem to support the flag for GCC compatibility, we might as well make it work if it's that easy.

> LLVM development heavily relies on `-Wswitch-enum`, for example.

I think we're using `-Wswitch`, as `-Wswitch-enum` requires to cover all enumeration values even if there is a default label. Our policy is: cover all enumeration values or have a `default`. This is "enforced" by `-Wswitch` in combination with `-Wcovered-switch-default`.

https://github.com/llvm/llvm-project/pull/73077


More information about the cfe-commits mailing list