Subject: Re: bug#75964: Switching the Emacs build to -Wswitch-enum in src/

From: Eli Zaretskii <[email-masked]>
Date: Sun, 02 Feb 2025 15:21:40 +0200

> Date: Sun, 02 Feb 2025 12:50:15 +0000
> From: Pip Cet <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked], Andrea Corallo <[email-masked]>, Stefan Monnier <[email-masked]>
> 
> "Eli Zaretskii" <[email-masked]> writes:
> 
> > We (should) use emacs_abort when the code has no way of dealing with
> > some situation, so letting the execution continue past that point will
> > sometimes crash or corrupt data in ways that are much harder to debug
> > than an abort.
> 
> We often use eassert for that, and I don't know how many people realize
> this subtle difference between emacs_abort () and eassert (0).

Well, I do: eassert compiles to nothing in a production build, so it
is only okay if the code can do something with the situation, albeit
something that will cause weird effects.  eassert is also appropriate
to convey the assumptions made by the code, even if no trouble will be
caused by violating those assumptions.

> I still think eassume and eassert shouldn't evaluate expressions with
> side effects.

I agree.  Do we have code which does that in Emacs?