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

From: Stefan Monnier <[email-masked]>
Date: Tue, 04 Feb 2025 11:55:12 -0500

>> Yes, this part of C sucks and I had forgotten about it.
> What sucks and why?

That

    switch ((enum Lisp_Type) 53) {
    case Lisp_Symbol:
    case Lisp_Type_Unused0:
    case Lisp_Int0:
    case Lisp_Int1:
    case Lisp_String:
    case Lisp_Vectorlike:
    case Lisp_Cons:
    case Lisp_Float:
      return 1;
    }
    return 2;

should return 2, because I'd prefer that it aborts and/or that the
programmer have a way to say explicitly what should happen.  `default:`
works for that in the case where you have listed *all* the enum's
values, but then you get stiffed in the case where you add an enum value
because the compiler won't tell you that you forgot to update this
`switch` accordingly.

        Stefan