mstorsjo wrote:
> Taking one as an example:
>
> ```
> enum class FunctionNameRepresentation {
> eName,
> eNameWithArgs,
> eNameWithNoArgs
> };
> ```
>
> And we do have a return for each of the cases.
>
> So it feels like a limitation in GCC's analysis, is that right or did they
> make a decision to warn in these cases? I can see some value in making people
> mark the "unused" exit path like you might a fallthrough case.
See
https://github.com/llvm/llvm-project/blob/main/llvm/docs/CodingStandards.rst#don-t-use-default-labels-in-fully-covered-switches-over-enumerations
- the root cause here is that GCC assumes that an enum variable still
technically can have any value outside of the enum, while Clang is ok with it.
> If you have some background on it please add it to the PR description. I'll
> probably want to cite it again at some point :)
> Also if we added an entry to one of these enums, would the "switch doesn't
> cover value" warning still happen? I think it would right?
Yes, we separately use `-Wswitch` which does produce this kind of warning with
both GCC and Clang if we're missing enum elements in the switch:
```
../../lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp:2181:11:
warning: enumeration value 'eName' not handled in switch [-Wswitch]
2181 | switch (representation) {
| ^~~~~~~~~~~~~~
```
https://github.com/llvm/llvm-project/pull/159327
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits