[webkit-dev] Idiom for functions with all return values in a switch case

Osztrogonác Csaba oszi at inf.u-szeged.hu
Thu May 11 01:17:46 PDT 2017


On 2017.05.11. 0:32, Andy Estes wrote:
>> On May 10, 2017, at 3:17 PM, Michael Catanzaro <mcatanzaro at igalia.com> wrote:
>> On Tue, May 9, 2017 at 2:57 PM, Ryosuke Niwa <rniwa at webkit.org> wrote:
>>> One annoying thing is that I've seen clang complaining about that
>>> return statement being an unreachable statement while gcc doesn't :(.
>>> So we probably shouldn't have return statement, not to mention that 0
>>> may not be a valid enum value.
>> In that case, I think I'll go with RELEASE_ASSERT_NOT_REACHED() for now... since otherwise GCC is going to complain in release builds if there is no return statement. (Won't clang complain about that too?)
> Clang won’t complain if the switch is exhaustive and all cases return.
> Andy

It isn't possible to check if all cases return if there is
no default label in the switch, see these comments for details:

GCC's warning is correct and clang won't complain,
but undefined behaviour can happen in runtime.


More information about the webkit-dev mailing list