about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_parse/src/parser')
-rw-r--r--compiler/rustc_parse/src/parser/expr.rs7
1 files changed, 3 insertions, 4 deletions
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(),