Commit 7fdaa1f0 by Ian Lance Taylor

compiler: call error_statement for fallthrough in last case

    
    It is possible to do this check in backend, by walking the
    block and check whether the last statement is a goto. But it
    seems easier to do it in the frontend, where it can simply use
    is_fallthrough.
    
    Reviewed-on: https://go-review.googlesource.com/63690

From-SVN: r252851
parent 026a79f7
de7b370901c4fc6852eaa7372282bb699429ec4a
70cf67704699c8bcaf6f52437812367cdc4ad169
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -3707,6 +3707,12 @@ Case_clauses::get_backend(Translate_context* context,
std::vector<Bexpression*> cases;
Bstatement* stat = p->get_backend(context, break_label, &case_constants,
&cases);
// The final clause can't fall through.
if (i == c - 1 && p->is_fallthrough())
{
go_assert(saw_errors());
stat = context->backend()->error_statement();
}
(*all_cases)[i].swap(cases);
(*all_statements)[i] = stat;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment