From 65eb7e516c798a9447dbfe1d02aeeb314d4fec54 Mon Sep 17 00:00:00 2001 From: Theodore Luo Wang Date: Sat, 4 Sep 2021 22:35:59 -0400 Subject: Use verbose suggestions and only match if the + is seen before a numeric literal --- compiler/rustc_parse/src/parser/expr.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'compiler/rustc_parse/src/parser/expr.rs') diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index 4463d2fc6c8..83e1c5ff753 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -516,16 +516,15 @@ impl<'a> Parser<'a> { token::BinOp(token::And) | token::AndAnd => { make_it!(this, attrs, |this, _| this.parse_borrow_expr(lo)) } - token::BinOp(token::Plus) => { + token::BinOp(token::Plus) if this.look_ahead(1, |tok| tok.is_numeric_lit()) => { let mut err = this.struct_span_err(lo, "leading `+` is not supported"); err.span_label(lo, "unexpected `+`"); // a block on the LHS might have been intended to be an expression instead - let sp = this.sess.source_map().start_point(lo); - if let Some(sp) = this.sess.ambiguous_block_expr_parse.borrow().get(&sp) { + if let Some(sp) = this.sess.ambiguous_block_expr_parse.borrow().get(&lo) { this.sess.expr_parentheses_needed(&mut err, *sp); } else { - err.span_suggestion( + err.span_suggestion_verbose( lo, "try removing the `+`", "".to_string(), -- cgit 1.4.1-3-g733a5