diff --git a/src/librustc_parse/parser/diagnostics.rs b/src/librustc_parse/parser/diagnostics.rs index 06122df304d..a79e1a44e96 100644 --- a/src/librustc_parse/parser/diagnostics.rs +++ b/src/librustc_parse/parser/diagnostics.rs @@ -1055,10 +1055,11 @@ impl<'a> Parser<'a> { } pub(super) fn try_macro_suggestion(&mut self) -> DiagnosticBuilder<'a> { + let is_try = self.token.is_keyword(kw::Try); let is_questionmark = self.look_ahead(1, |t| t == &token::Not); //check for ! let is_open = self.look_ahead(2, |t| t == &token::OpenDelim(token::Paren)); //check for ( - if is_questionmark && is_open { + if is_try && is_questionmark && is_open { let lo = self.token.span; self.bump(); //remove try self.bump(); //remove ! diff --git a/src/librustc_parse/parser/expr.rs b/src/librustc_parse/parser/expr.rs index 907a8c2dce2..ef98aab9c9f 100644 --- a/src/librustc_parse/parser/expr.rs +++ b/src/librustc_parse/parser/expr.rs @@ -1001,14 +1001,12 @@ impl<'a> Parser<'a> { fn parse_lit_expr(&mut self, attrs: AttrVec) -> PResult<'a, P> { let lo = self.token.span; - let is_try = self.token.is_keyword(kw::Try); match self.parse_opt_lit() { Some(literal) => { let expr = self.mk_expr(lo.to(self.prev_token.span), ExprKind::Lit(literal), attrs); self.maybe_recover_from_bad_qpath(expr, true) } - None if is_try => Err(self.try_macro_suggestion()), - None => Err(self.expected_expression_found()), + None => Err(self.try_macro_suggestion()), } }