diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 6cee7b86a6106..d1fc8ac200205 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2941,9 +2941,15 @@ impl<'a> Parser<'a> { } fn parse_match_expr(&mut self) -> PResult
> {
+ let match_span = self.last_span;
let lo = self.last_span.lo;
let discriminant = try!(self.parse_expr_res(Restrictions::RESTRICTION_NO_STRUCT_LITERAL));
- try!(self.commit_expr_expecting(&*discriminant, token::OpenDelim(token::Brace)));
+ if let Err(e) = self.commit_expr_expecting(&*discriminant, token::OpenDelim(token::Brace)) {
+ if self.token == token::Token::Semi {
+ self.span_note(match_span, "did you mean to remove this `match` keyword?");
+ }
+ return Err(e)
+ }
let mut arms: Vec