grep: catch a missing enum in switch statement
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 25 May 2017 19:45:25 +0000 (19:45 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 26 May 2017 03:52:37 +0000 (12:52 +0900)
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 bad option. This won't ever
trigger in practice, but if a new pattern type were to be added this
catches an otherwise silent bug during development.

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@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/grep.c
index 3ffb5b4e8176bbcd1ecf2e4ae2dc84aee968cd22..a191e2976bacc4099926c917a10e6e768dededd1 100644 (file)
@@ -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;