From 6a686e011286ef7f9bf54e46e1b585229b603d37 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 13 Mar 2015 20:48:15 +0000 Subject: [PATCH] compiler: Permit label on fallthrough statement. Test case: https://go-review.googlesource.com/7523 . git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221428 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/parse.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 496ab41..970e6bd 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -3735,6 +3735,17 @@ Parse::labeled_stmt(const std::string& label_name, Location location) if (!this->statement_may_start_here()) { + if (this->peek_token()->is_keyword(KEYWORD_FALLTHROUGH)) + { + // We don't treat the fallthrough keyword as a statement, + // because it can't appear most places where a statement is + // permitted, but it may have a label. We introduce a + // semicolon because the caller expects to see a statement. + this->unget_token(Token::make_operator_token(OPERATOR_SEMICOLON, + location)); + return; + } + // Mark the label as used to avoid a useless error about an // unused label. if (label != NULL) -- 2.7.4