[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


Hi,

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:
https://bugs.webkit.org/show_bug.cgi?id=150842#c3

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

br,
Ossy


More information about the webkit-dev mailing list