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