On Sun, Nov 11 2018, Jeff King wrote: > On Sat, Nov 10, 2018 at 10:23:05PM -0800, Elijah Newren wrote: > >> ABORT and ERROR happen to have the same value, but come from differnt >> enums. Use the one from the correct enum. > > Yikes. :) > > This is a good argument for naming these SIGNED_TAG_ABORT, etc. But this > is obviously an improvement in the meantime. In C enum values aren't the types of the enum, but I'd thought someone would have added a warning for this: #include <stdio.h> enum { A, B } foo = A; enum { C, D } bar = C; int main(void) { switch (foo) { case C: puts("A"); break; case B: puts("B"); break; } } But none of the 4 C compilers (gcc, clang, suncc & xlc) I have warn about it. Good to know.