Ævar Arnfjörð Bjarmason [off-list ref] writes:
Change code in get_value(), parse_options_check() etc. to do away with
the "default" case in favor of exhaustively checking the relevant
fields.
I am not sure if this is a good idea in the bigger picture.
If we know that unlisted cases should not happen, having "default:
BUG()" without explicitly listing them is just as expressive as the
result of this patch with much shorter code.
When a new enum member is added without adding corresponding
processing of the new value, either way it will be caught as a
BUG(). Removing "default: BUG()" does allow you to catch such an
error at compilation time, and keeping it may prevent you from doing
so, but in practice, you'd be adding test coverage for the new case,
which means that, even if your compiler is not cooperating, your
test suite addition will hit "default: BUG();" in such a case.
So ...
quoted hunk
- default:
+ /* special types */
+ case OPTION_END:
+ case OPTION_GROUP:
+ case OPTION_NUMBER:
+ case OPTION_ALIAS:
BUG("opt->type %d should not happen", opt->type);
}
+ return -1; /* gcc 10.2.1-6's -Werror=return-type */
}