about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-10-02 20:27:16 +0200
committerGitHub <noreply@github.com>2020-10-02 20:27:16 +0200
commitde8d7aa400b1d45317a6dcd8b1497fab1bfe3f11 (patch)
treeaf2f2b6015ed7f1c7d6864fba269ebb1f60e317b
parent14d8ee34655aaa1cb919b9d7e0805737b53c421f (diff)
parent7d5a6203ec08ef6f5cf2349ba478f54ca1513989 (diff)
downloadrust-de8d7aa400b1d45317a6dcd8b1497fab1bfe3f11.tar.gz
rust-de8d7aa400b1d45317a6dcd8b1497fab1bfe3f11.zip
Rollup merge of #77444 - estebank:pat-field-label, r=davidtwco
Fix span for incorrect pattern field and add label

Address #73750.
-rw-r--r--compiler/rustc_parse/src/parser/pat.rs3
-rw-r--r--src/test/ui/parser/bind-struct-early-modifiers.stderr6
-rw-r--r--src/test/ui/parser/issue-10392.stderr4
-rw-r--r--src/test/ui/parser/issue-63135.stderr4
-rw-r--r--src/test/ui/resolve/issue-54379.stderr6
5 files changed, 16 insertions, 7 deletions
diff --git a/compiler/rustc_parse/src/parser/pat.rs b/compiler/rustc_parse/src/parser/pat.rs
index 2c0133a24dc..5aced9dc37c 100644
--- a/compiler/rustc_parse/src/parser/pat.rs
+++ b/compiler/rustc_parse/src/parser/pat.rs
@@ -795,6 +795,7 @@ impl<'a> Parser<'a> {
         }
         self.bump();
         let (fields, etc) = self.parse_pat_fields().unwrap_or_else(|mut e| {
+            e.span_label(path.span, "while parsing the fields for this pattern");
             e.emit();
             self.recover_stmt();
             (vec![], true)
@@ -844,7 +845,7 @@ impl<'a> Parser<'a> {
 
             // check that a comma comes after every field
             if !ate_comma {
-                let err = self.struct_span_err(self.prev_token.span, "expected `,`");
+                let err = self.struct_span_err(self.token.span, "expected `,`");
                 if let Some(mut delayed) = delayed_err {
                     delayed.emit();
                 }
diff --git a/src/test/ui/parser/bind-struct-early-modifiers.stderr b/src/test/ui/parser/bind-struct-early-modifiers.stderr
index 03482a41f54..b35762a887c 100644
--- a/src/test/ui/parser/bind-struct-early-modifiers.stderr
+++ b/src/test/ui/parser/bind-struct-early-modifiers.stderr
@@ -1,8 +1,10 @@
 error: expected `,`
-  --> $DIR/bind-struct-early-modifiers.rs:4:19
+  --> $DIR/bind-struct-early-modifiers.rs:4:20
    |
 LL |         Foo { ref x: ref x } => {},
-   |                   ^
+   |         ---        ^
+   |         |
+   |         while parsing the fields for this pattern
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/issue-10392.stderr b/src/test/ui/parser/issue-10392.stderr
index 34991151c1e..438ea67d33c 100644
--- a/src/test/ui/parser/issue-10392.stderr
+++ b/src/test/ui/parser/issue-10392.stderr
@@ -2,7 +2,9 @@ error: expected identifier, found `,`
   --> $DIR/issue-10392.rs:6:13
    |
 LL |     let A { , } = a();
-   |             ^ expected identifier
+   |         -   ^ expected identifier
+   |         |
+   |         while parsing the fields for this pattern
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/issue-63135.stderr b/src/test/ui/parser/issue-63135.stderr
index 396aec8335d..80e9ac5bedf 100644
--- a/src/test/ui/parser/issue-63135.stderr
+++ b/src/test/ui/parser/issue-63135.stderr
@@ -35,7 +35,9 @@ error: expected one of `!` or `[`, found `}`
   --> $DIR/issue-63135.rs:3:16
    |
 LL | fn i(n{...,f #
-   |                ^ expected one of `!` or `[`
+   |      -         ^ expected one of `!` or `[`
+   |      |
+   |      while parsing the fields for this pattern
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/resolve/issue-54379.stderr b/src/test/ui/resolve/issue-54379.stderr
index 2a6b54572de..750727273eb 100644
--- a/src/test/ui/resolve/issue-54379.stderr
+++ b/src/test/ui/resolve/issue-54379.stderr
@@ -8,10 +8,12 @@ LL |         MyStruct { .., Some(_) } => {},
    |                    `..` must be at the end and cannot have a trailing comma
 
 error: expected `,`
-  --> $DIR/issue-54379.rs:9:24
+  --> $DIR/issue-54379.rs:9:28
    |
 LL |         MyStruct { .., Some(_) } => {},
-   |                        ^^^^
+   |         --------           ^
+   |         |
+   |         while parsing the fields for this pattern
 
 error: aborting due to 2 previous errors