[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