stage1: make C++ switch fallthrough an error

Make fallthrough an error when compiler supports it. This requires a new
macro that is defined with such compilers to be used as a statement, at
all fallthrough sites:

    switch (...) {
        case 0:
            ...
            ZIG_FALLTHROUGH;
        case 1:
            ...
            break;
        default:
            ...
            break;
    }

If we ever move to C++17 as minimal requirement, then the macro can be
replaced with `[[fallthrough]];` at statement sites.
This commit is contained in:
Michael Dusan
2020-04-01 12:47:50 -04:00
committed by Andrew Kelley
parent 0f1f56bb69
commit 212e2354b8
8 changed files with 28 additions and 7 deletions

View File

@@ -3954,8 +3954,9 @@ static void render_async_var_decls(CodeGen *g, Scope *scope) {
if (var->did_the_decl_codegen) {
render_decl_var(g, var);
}
// fallthrough
}
ZIG_FALLTHROUGH;
case ScopeIdDecls:
case ScopeIdBlock:
case ScopeIdDefer: