Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Add a die(...) to a default case for the switch statement selecting > between grep pattern types under --recurse-submodules. > > Normally this would be caught by -Wswitch, but the grep_pattern_type > type is converted to int by going through parse_options(). Changing > the argument type passed to compile_submodule_options() won't work, > the value will just get coerced. The -Wswitch-default warning will > warn about it, but that produces a lot of noise across the codebase, > this potential issue would be drowned in that noise. > > Thus catching this at runtime is the least worst option. This won't least bad, I guess? > ever trigger in practice, but if a new pattern type were to be added > this catches an otherwise silent bug during development. Good future-proofing. When this and Peff's "BUG" thing both graduates, we can turn this into a BUG, I think. Thanks. > > See commit 0281e487fd ("grep: optionally recurse into submodules", > 2016-12-16) for the initial addition of this code. > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> > --- > builtin/grep.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/builtin/grep.c b/builtin/grep.c > index 3ffb5b4e81..a191e2976b 100644 > --- a/builtin/grep.c > +++ b/builtin/grep.c > @@ -495,6 +495,8 @@ static void compile_submodule_options(const struct grep_opt *opt, > break; > case GREP_PATTERN_TYPE_UNSPECIFIED: > break; > + default: > + die("BUG: Added a new grep pattern type without updating switch statement"); > } > > for (pattern = opt->pattern_list; pattern != NULL;