about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-04-30 20:37:42 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-04-30 20:37:42 -0700
commit617ce2b7ee330bbcc7ce8eb87160c71ad995639b (patch)
tree2737b98c97ad94492241db0f67c7ab52666085a0
parentbff0be37845a96010fa2161bbf137fadfe763ae5 (diff)
downloadrust-617ce2b7ee330bbcc7ce8eb87160c71ad995639b.tar.gz
rust-617ce2b7ee330bbcc7ce8eb87160c71ad995639b.zip
Reword ambigous parse error to fit with the current error
-rw-r--r--src/libsyntax/parse/parser.rs11
-rw-r--r--src/test/ui/parser/expr-as-stmt.fixed4
-rw-r--r--src/test/ui/parser/expr-as-stmt.rs4
-rw-r--r--src/test/ui/parser/expr-as-stmt.stderr8
4 files changed, 14 insertions, 13 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 3c7f477cc8f..fbd1203dec9 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3649,13 +3649,14 @@ impl<'a> Parser<'a> {
                 return Ok(lhs);
             }
             (true, Some(_)) => {
-                // #54186, #54482, #59975
                 // We've found an expression that would be parsed as a statement, but the next
                 // token implies this should be parsed as an expression.
-                let mut err = self.sess.span_diagnostic.struct_span_err(
-                    self.span,
-                    "ambiguous parse",
-                );
+                // For example: `if let Some(x) = x { x } else { 0 } / 2`
+                let mut err = self.sess.span_diagnostic.struct_span_err(self.span, &format!(
+                    "expected expression, found `{}`",
+                    pprust::token_to_string(&self.token),
+                ));
+                err.span_label(self.span, "expected expression");
                 let snippet = self.sess.source_map().span_to_snippet(lhs.span)
                     .unwrap_or_else(|_| pprust::expr_to_string(&lhs));
                 err.span_suggestion(
diff --git a/src/test/ui/parser/expr-as-stmt.fixed b/src/test/ui/parser/expr-as-stmt.fixed
index 123f06e7707..1ce6f9c2503 100644
--- a/src/test/ui/parser/expr-as-stmt.fixed
+++ b/src/test/ui/parser/expr-as-stmt.fixed
@@ -27,14 +27,14 @@ fn baz() -> i32 {
 
 fn qux(a: Option<u32>, b: Option<u32>) -> bool {
     (if let Some(x) = a { true } else { false })
-    && //~ ERROR ambiguous parse
+    && //~ ERROR expected expression
     if let Some(y) = a { true } else { false }
 }
 
 fn moo(x: u32) -> bool {
     (match x {
         _ => 1,
-    }) > 0 //~ ERROR ambiguous parse
+    }) > 0 //~ ERROR expected expression
 }
 
 fn main() {}
diff --git a/src/test/ui/parser/expr-as-stmt.rs b/src/test/ui/parser/expr-as-stmt.rs
index 6f713c08940..b526c17488e 100644
--- a/src/test/ui/parser/expr-as-stmt.rs
+++ b/src/test/ui/parser/expr-as-stmt.rs
@@ -27,14 +27,14 @@ fn baz() -> i32 {
 
 fn qux(a: Option<u32>, b: Option<u32>) -> bool {
     if let Some(x) = a { true } else { false }
-    && //~ ERROR ambiguous parse
+    && //~ ERROR expected expression
     if let Some(y) = a { true } else { false }
 }
 
 fn moo(x: u32) -> bool {
     match x {
         _ => 1,
-    } > 0 //~ ERROR ambiguous parse
+    } > 0 //~ ERROR expected expression
 }
 
 fn main() {}
diff --git a/src/test/ui/parser/expr-as-stmt.stderr b/src/test/ui/parser/expr-as-stmt.stderr
index be577b8f36f..1725ba944c5 100644
--- a/src/test/ui/parser/expr-as-stmt.stderr
+++ b/src/test/ui/parser/expr-as-stmt.stderr
@@ -22,19 +22,19 @@ LL |     { 42 } + foo;
    |     |
    |     help: parenthesis are required to parse this as an expression: `({ 42 })`
 
-error: ambiguous parse
+error: expected expression, found `&&`
   --> $DIR/expr-as-stmt.rs:30:5
    |
 LL |     if let Some(x) = a { true } else { false }
    |     ------------------------------------------ help: parenthesis are required to parse this as an expression: `(if let Some(x) = a { true } else { false })`
 LL |     &&
-   |     ^^
+   |     ^^ expected expression
 
-error: ambiguous parse
+error: expected expression, found `>`
   --> $DIR/expr-as-stmt.rs:37:7
    |
 LL |     } > 0
-   |       ^
+   |       ^ expected expression
 help: parenthesis are required to parse this as an expression
    |
 LL |     (match x {