In Go 1 the fallthrough statement is no longer permitted in the last
case of a switch, as there is no code to which to fall through.  This
patch from Rémy Oudompheng implements this restriction in gccgo.
Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline and 4.8 branch.

Ian

diff -r 133fcbfa33c6 go/parse.cc
--- a/go/parse.cc	Wed Jun 26 15:31:30 2013 -0700
+++ b/go/parse.cc	Wed Jun 26 15:44:23 2013 -0700
@@ -4523,9 +4523,12 @@
   bool is_fallthrough = false;
   if (this->peek_token()->is_keyword(KEYWORD_FALLTHROUGH))
     {
+      Location fallthrough_loc = this->location();
       is_fallthrough = true;
       if (this->advance_token()->is_op(OPERATOR_SEMICOLON))
 	this->advance_token();
+      if (this->peek_token()->is_op(OPERATOR_RCURLY))
+	error_at(fallthrough_loc, _("cannot fallthrough final case in switch"));
     }
 
   if (is_default)

Reply via email to