about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2023-11-17 00:41:24 +0100
committerGitHub <noreply@github.com>2023-11-17 00:41:24 +0100
commita5d7f8bcf2d6658f7c6a5f4408e5d3ef11576605 (patch)
tree5cdeb92a742beaa77b2f91f3184676957324cabc
parentf82fefd11ee959dc5a6d04a56331828d7fffd78d (diff)
parent099eb409322acdc59fc6af6cf3a935ce6a0217f8 (diff)
downloadrust-a5d7f8bcf2d6658f7c6a5f4408e5d3ef11576605.tar.gz
rust-a5d7f8bcf2d6658f7c6a5f4408e5d3ef11576605.zip
Rollup merge of #117990 - estebank:issue-100825-part-deux, r=Nilstrieb
Tweak error and move tests

r? `@Nilstrieb`

Split off #117565.
-rw-r--r--compiler/rustc_parse/src/errors.rs3
-rw-r--r--compiler/rustc_parse/src/parser/mod.rs4
-rw-r--r--compiler/rustc_parse/src/parser/pat.rs10
-rw-r--r--tests/ui/parser/issues/issue-32501.stderr2
-rw-r--r--tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr4
-rw-r--r--tests/ui/parser/mut-patterns.stderr4
-rw-r--r--tests/ui/parser/recover/recover-assoc-const-constraint.rs (renamed from tests/ui/parser/recover-assoc-const-constraint.rs)0
-rw-r--r--tests/ui/parser/recover/recover-assoc-const-constraint.stderr (renamed from tests/ui/parser/recover-assoc-const-constraint.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-assoc-eq-missing-term.rs (renamed from tests/ui/parser/recover-assoc-eq-missing-term.rs)0
-rw-r--r--tests/ui/parser/recover/recover-assoc-eq-missing-term.stderr (renamed from tests/ui/parser/recover-assoc-eq-missing-term.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-assoc-lifetime-constraint.rs (renamed from tests/ui/parser/recover-assoc-lifetime-constraint.rs)0
-rw-r--r--tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr (renamed from tests/ui/parser/recover-assoc-lifetime-constraint.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-const-async-fn-ptr.rs (renamed from tests/ui/parser/recover-const-async-fn-ptr.rs)0
-rw-r--r--tests/ui/parser/recover/recover-const-async-fn-ptr.stderr (renamed from tests/ui/parser/recover-const-async-fn-ptr.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-enum.rs (renamed from tests/ui/parser/recover-enum.rs)0
-rw-r--r--tests/ui/parser/recover/recover-enum.stderr (renamed from tests/ui/parser/recover-enum.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-enum2.rs (renamed from tests/ui/parser/recover-enum2.rs)0
-rw-r--r--tests/ui/parser/recover/recover-enum2.stderr (renamed from tests/ui/parser/recover-enum2.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.rs (renamed from tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs)0
-rw-r--r--tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr (renamed from tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-field-extra-angle-brackets.rs (renamed from tests/ui/parser/recover-field-extra-angle-brackets.rs)0
-rw-r--r--tests/ui/parser/recover/recover-field-extra-angle-brackets.stderr (renamed from tests/ui/parser/recover-field-extra-angle-brackets.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-field-semi.rs (renamed from tests/ui/parser/recover-field-semi.rs)0
-rw-r--r--tests/ui/parser/recover/recover-field-semi.stderr (renamed from tests/ui/parser/recover-field-semi.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-fn-ptr-with-generics.rs (renamed from tests/ui/parser/recover-fn-ptr-with-generics.rs)0
-rw-r--r--tests/ui/parser/recover/recover-fn-ptr-with-generics.stderr (renamed from tests/ui/parser/recover-fn-ptr-with-generics.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-fn-trait-from-fn-kw.rs (renamed from tests/ui/parser/recover-fn-trait-from-fn-kw.rs)0
-rw-r--r--tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr (renamed from tests/ui/parser/recover-fn-trait-from-fn-kw.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-for-loop-parens-around-head.rs (renamed from tests/ui/parser/recover-for-loop-parens-around-head.rs)0
-rw-r--r--tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr (renamed from tests/ui/parser/recover-for-loop-parens-around-head.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-from-bad-variant.rs (renamed from tests/ui/parser/recover-from-bad-variant.rs)0
-rw-r--r--tests/ui/parser/recover/recover-from-bad-variant.stderr (renamed from tests/ui/parser/recover-from-bad-variant.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-from-homoglyph.rs (renamed from tests/ui/parser/recover-from-homoglyph.rs)0
-rw-r--r--tests/ui/parser/recover/recover-from-homoglyph.stderr (renamed from tests/ui/parser/recover-from-homoglyph.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-labeled-non-block-expr.fixed (renamed from tests/ui/parser/recover-labeled-non-block-expr.fixed)0
-rw-r--r--tests/ui/parser/recover/recover-labeled-non-block-expr.rs (renamed from tests/ui/parser/recover-labeled-non-block-expr.rs)0
-rw-r--r--tests/ui/parser/recover/recover-labeled-non-block-expr.stderr (renamed from tests/ui/parser/recover-labeled-non-block-expr.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-missing-semi-before-item.fixed (renamed from tests/ui/parser/recover-missing-semi-before-item.fixed)0
-rw-r--r--tests/ui/parser/recover/recover-missing-semi-before-item.rs (renamed from tests/ui/parser/recover-missing-semi-before-item.rs)0
-rw-r--r--tests/ui/parser/recover/recover-missing-semi-before-item.stderr (renamed from tests/ui/parser/recover-missing-semi-before-item.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-missing-semi.rs (renamed from tests/ui/parser/recover-missing-semi.rs)0
-rw-r--r--tests/ui/parser/recover/recover-missing-semi.stderr (renamed from tests/ui/parser/recover-missing-semi.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-parens-around-match-arm-head.rs14
-rw-r--r--tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr49
-rw-r--r--tests/ui/parser/recover/recover-quantified-closure.rs (renamed from tests/ui/parser/recover-quantified-closure.rs)0
-rw-r--r--tests/ui/parser/recover/recover-quantified-closure.stderr (renamed from tests/ui/parser/recover-quantified-closure.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-range-pats.rs (renamed from tests/ui/parser/recover-range-pats.rs)0
-rw-r--r--tests/ui/parser/recover/recover-range-pats.stderr (renamed from tests/ui/parser/recover-range-pats.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-ref-dyn-mut.rs (renamed from tests/ui/parser/recover-ref-dyn-mut.rs)0
-rw-r--r--tests/ui/parser/recover/recover-ref-dyn-mut.stderr (renamed from tests/ui/parser/recover-ref-dyn-mut.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-struct.rs (renamed from tests/ui/parser/recover-struct.rs)0
-rw-r--r--tests/ui/parser/recover/recover-struct.stderr (renamed from tests/ui/parser/recover-struct.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-tuple-pat.rs (renamed from tests/ui/parser/recover-tuple-pat.rs)0
-rw-r--r--tests/ui/parser/recover/recover-tuple-pat.stderr (renamed from tests/ui/parser/recover-tuple-pat.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-tuple.rs (renamed from tests/ui/parser/recover-tuple.rs)0
-rw-r--r--tests/ui/parser/recover/recover-tuple.stderr (renamed from tests/ui/parser/recover-tuple.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-unticked-labels.fixed (renamed from tests/ui/parser/recover-unticked-labels.fixed)0
-rw-r--r--tests/ui/parser/recover/recover-unticked-labels.rs (renamed from tests/ui/parser/recover-unticked-labels.rs)0
-rw-r--r--tests/ui/parser/recover/recover-unticked-labels.stderr (renamed from tests/ui/parser/recover-unticked-labels.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.fixed (renamed from tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed)0
-rw-r--r--tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.rs (renamed from tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs)0
-rw-r--r--tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.stderr (renamed from tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr)0
-rw-r--r--tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.rs (renamed from tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs)0
-rw-r--r--tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.stderr (renamed from tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr)0
-rw-r--r--tests/ui/self/self_type_keyword.stderr2
65 files changed, 77 insertions, 15 deletions
diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs
index 8ab1ec298a1..99e66fddc70 100644
--- a/compiler/rustc_parse/src/errors.rs
+++ b/compiler/rustc_parse/src/errors.rs
@@ -2278,9 +2278,8 @@ pub(crate) enum InvalidMutInPattern {
     #[note(parse_note_mut_pattern_usage)]
     NonIdent {
         #[primary_span]
-        #[suggestion(code = "{pat}", applicability = "machine-applicable")]
+        #[suggestion(code = "", applicability = "machine-applicable")]
         span: Span,
-        pat: String,
     },
 }
 
diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs
index 2fe70694368..833381a6503 100644
--- a/compiler/rustc_parse/src/parser/mod.rs
+++ b/compiler/rustc_parse/src/parser/mod.rs
@@ -830,8 +830,8 @@ impl<'a> Parser<'a> {
                             // https://github.com/rust-lang/rust/issues/72373
                             if self.prev_token.is_ident() && self.token.kind == token::DotDot {
                                 let msg = format!(
-                                    "if you meant to bind the contents of \
-                                    the rest of the array pattern into `{}`, use `@`",
+                                    "if you meant to bind the contents of the rest of the array \
+                                     pattern into `{}`, use `@`",
                                     pprust::token_to_string(&self.prev_token)
                                 );
                                 expect_err
diff --git a/compiler/rustc_parse/src/parser/pat.rs b/compiler/rustc_parse/src/parser/pat.rs
index 0a4c7c17d06..f6e1a21bd26 100644
--- a/compiler/rustc_parse/src/parser/pat.rs
+++ b/compiler/rustc_parse/src/parser/pat.rs
@@ -638,13 +638,13 @@ impl<'a> Parser<'a> {
 
     /// Error on `mut $pat` where `$pat` is not an ident.
     fn ban_mut_general_pat(&self, lo: Span, pat: &Pat, changed_any_binding: bool) {
-        let span = lo.to(pat.span);
-        let pat = pprust::pat_to_string(&pat);
-
         self.sess.emit_err(if changed_any_binding {
-            InvalidMutInPattern::NestedIdent { span, pat }
+            InvalidMutInPattern::NestedIdent {
+                span: lo.to(pat.span),
+                pat: pprust::pat_to_string(&pat),
+            }
         } else {
-            InvalidMutInPattern::NonIdent { span, pat }
+            InvalidMutInPattern::NonIdent { span: lo.until(pat.span) }
         });
     }
 
diff --git a/tests/ui/parser/issues/issue-32501.stderr b/tests/ui/parser/issues/issue-32501.stderr
index d53302449a8..df12f7768d4 100644
--- a/tests/ui/parser/issues/issue-32501.stderr
+++ b/tests/ui/parser/issues/issue-32501.stderr
@@ -2,7 +2,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/issue-32501.rs:7:9
    |
 LL |     let mut _ = 0;
-   |         ^^^^^ help: remove the `mut` prefix: `_`
+   |         ^^^^ help: remove the `mut` prefix
    |
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 
diff --git a/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr b/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr
index 8c032e588e3..2bd87ee0c38 100644
--- a/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr
+++ b/tests/ui/parser/issues/issue-65122-mac-invoc-in-mut-patterns.stderr
@@ -2,7 +2,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/issue-65122-mac-invoc-in-mut-patterns.rs:6:13
    |
 LL |         let mut $eval = ();
-   |             ^^^^^^^^^ help: remove the `mut` prefix: `does_not_exist!()`
+   |             ^^^^ help: remove the `mut` prefix
 ...
 LL |     mac1! { does_not_exist!() }
    |     --------------------------- in this macro invocation
@@ -25,7 +25,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/issue-65122-mac-invoc-in-mut-patterns.rs:13:13
    |
 LL |         let mut $eval = ();
-   |             ^^^ help: remove the `mut` prefix: `does_not_exist!()`
+   |             ^^^ help: remove the `mut` prefix
 ...
 LL |     mac2! { does_not_exist!() }
    |     --------------------------- in this macro invocation
diff --git a/tests/ui/parser/mut-patterns.stderr b/tests/ui/parser/mut-patterns.stderr
index f179d8c9e0a..66985c9f5e4 100644
--- a/tests/ui/parser/mut-patterns.stderr
+++ b/tests/ui/parser/mut-patterns.stderr
@@ -2,7 +2,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/mut-patterns.rs:9:9
    |
 LL |     let mut _ = 0;
-   |         ^^^^^ help: remove the `mut` prefix: `_`
+   |         ^^^^ help: remove the `mut` prefix
    |
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 
@@ -10,7 +10,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/mut-patterns.rs:10:9
    |
 LL |     let mut (_, _) = (0, 0);
-   |         ^^^^^^^^^^ help: remove the `mut` prefix: `(_, _)`
+   |         ^^^^ help: remove the `mut` prefix
    |
    = note: `mut` may be followed by `variable` and `variable @ pattern`
 
diff --git a/tests/ui/parser/recover-assoc-const-constraint.rs b/tests/ui/parser/recover/recover-assoc-const-constraint.rs
index 1453e6cb5cd..1453e6cb5cd 100644
--- a/tests/ui/parser/recover-assoc-const-constraint.rs
+++ b/tests/ui/parser/recover/recover-assoc-const-constraint.rs
diff --git a/tests/ui/parser/recover-assoc-const-constraint.stderr b/tests/ui/parser/recover/recover-assoc-const-constraint.stderr
index 2d36ce4e986..2d36ce4e986 100644
--- a/tests/ui/parser/recover-assoc-const-constraint.stderr
+++ b/tests/ui/parser/recover/recover-assoc-const-constraint.stderr
diff --git a/tests/ui/parser/recover-assoc-eq-missing-term.rs b/tests/ui/parser/recover/recover-assoc-eq-missing-term.rs
index 4b42c44dc64..4b42c44dc64 100644
--- a/tests/ui/parser/recover-assoc-eq-missing-term.rs
+++ b/tests/ui/parser/recover/recover-assoc-eq-missing-term.rs
diff --git a/tests/ui/parser/recover-assoc-eq-missing-term.stderr b/tests/ui/parser/recover/recover-assoc-eq-missing-term.stderr
index 152f7f2fb06..152f7f2fb06 100644
--- a/tests/ui/parser/recover-assoc-eq-missing-term.stderr
+++ b/tests/ui/parser/recover/recover-assoc-eq-missing-term.stderr
diff --git a/tests/ui/parser/recover-assoc-lifetime-constraint.rs b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.rs
index 558fcdfe177..558fcdfe177 100644
--- a/tests/ui/parser/recover-assoc-lifetime-constraint.rs
+++ b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.rs
diff --git a/tests/ui/parser/recover-assoc-lifetime-constraint.stderr b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr
index 79437533d7c..79437533d7c 100644
--- a/tests/ui/parser/recover-assoc-lifetime-constraint.stderr
+++ b/tests/ui/parser/recover/recover-assoc-lifetime-constraint.stderr
diff --git a/tests/ui/parser/recover-const-async-fn-ptr.rs b/tests/ui/parser/recover/recover-const-async-fn-ptr.rs
index 25af8772ced..25af8772ced 100644
--- a/tests/ui/parser/recover-const-async-fn-ptr.rs
+++ b/tests/ui/parser/recover/recover-const-async-fn-ptr.rs
diff --git a/tests/ui/parser/recover-const-async-fn-ptr.stderr b/tests/ui/parser/recover/recover-const-async-fn-ptr.stderr
index 7012096b644..7012096b644 100644
--- a/tests/ui/parser/recover-const-async-fn-ptr.stderr
+++ b/tests/ui/parser/recover/recover-const-async-fn-ptr.stderr
diff --git a/tests/ui/parser/recover-enum.rs b/tests/ui/parser/recover/recover-enum.rs
index 08dd939e2c0..08dd939e2c0 100644
--- a/tests/ui/parser/recover-enum.rs
+++ b/tests/ui/parser/recover/recover-enum.rs
diff --git a/tests/ui/parser/recover-enum.stderr b/tests/ui/parser/recover/recover-enum.stderr
index a2b650e4f4e..a2b650e4f4e 100644
--- a/tests/ui/parser/recover-enum.stderr
+++ b/tests/ui/parser/recover/recover-enum.stderr
diff --git a/tests/ui/parser/recover-enum2.rs b/tests/ui/parser/recover/recover-enum2.rs
index 0c942088955..0c942088955 100644
--- a/tests/ui/parser/recover-enum2.rs
+++ b/tests/ui/parser/recover/recover-enum2.rs
diff --git a/tests/ui/parser/recover-enum2.stderr b/tests/ui/parser/recover/recover-enum2.stderr
index 7634bca921c..7634bca921c 100644
--- a/tests/ui/parser/recover-enum2.stderr
+++ b/tests/ui/parser/recover/recover-enum2.stderr
diff --git a/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs b/tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.rs
index e815c7611c0..e815c7611c0 100644
--- a/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.rs
+++ b/tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.rs
diff --git a/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr b/tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr
index 17237c93097..17237c93097 100644
--- a/tests/ui/parser/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr
+++ b/tests/ui/parser/recover/recover-field-extra-angle-brackets-in-struct-with-a-field.stderr
diff --git a/tests/ui/parser/recover-field-extra-angle-brackets.rs b/tests/ui/parser/recover/recover-field-extra-angle-brackets.rs
index 5e0e00bcb5e..5e0e00bcb5e 100644
--- a/tests/ui/parser/recover-field-extra-angle-brackets.rs
+++ b/tests/ui/parser/recover/recover-field-extra-angle-brackets.rs
diff --git a/tests/ui/parser/recover-field-extra-angle-brackets.stderr b/tests/ui/parser/recover/recover-field-extra-angle-brackets.stderr
index 318e55f6e99..318e55f6e99 100644
--- a/tests/ui/parser/recover-field-extra-angle-brackets.stderr
+++ b/tests/ui/parser/recover/recover-field-extra-angle-brackets.stderr
diff --git a/tests/ui/parser/recover-field-semi.rs b/tests/ui/parser/recover/recover-field-semi.rs
index b703578860e..b703578860e 100644
--- a/tests/ui/parser/recover-field-semi.rs
+++ b/tests/ui/parser/recover/recover-field-semi.rs
diff --git a/tests/ui/parser/recover-field-semi.stderr b/tests/ui/parser/recover/recover-field-semi.stderr
index 3cf4847488c..3cf4847488c 100644
--- a/tests/ui/parser/recover-field-semi.stderr
+++ b/tests/ui/parser/recover/recover-field-semi.stderr
diff --git a/tests/ui/parser/recover-fn-ptr-with-generics.rs b/tests/ui/parser/recover/recover-fn-ptr-with-generics.rs
index 31de418be5f..31de418be5f 100644
--- a/tests/ui/parser/recover-fn-ptr-with-generics.rs
+++ b/tests/ui/parser/recover/recover-fn-ptr-with-generics.rs
diff --git a/tests/ui/parser/recover-fn-ptr-with-generics.stderr b/tests/ui/parser/recover/recover-fn-ptr-with-generics.stderr
index 069fcffe9a0..069fcffe9a0 100644
--- a/tests/ui/parser/recover-fn-ptr-with-generics.stderr
+++ b/tests/ui/parser/recover/recover-fn-ptr-with-generics.stderr
diff --git a/tests/ui/parser/recover-fn-trait-from-fn-kw.rs b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.rs
index b6611e6273d..b6611e6273d 100644
--- a/tests/ui/parser/recover-fn-trait-from-fn-kw.rs
+++ b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.rs
diff --git a/tests/ui/parser/recover-fn-trait-from-fn-kw.stderr b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr
index 3681a796c53..3681a796c53 100644
--- a/tests/ui/parser/recover-fn-trait-from-fn-kw.stderr
+++ b/tests/ui/parser/recover/recover-fn-trait-from-fn-kw.stderr
diff --git a/tests/ui/parser/recover-for-loop-parens-around-head.rs b/tests/ui/parser/recover/recover-for-loop-parens-around-head.rs
index 053b428bd12..053b428bd12 100644
--- a/tests/ui/parser/recover-for-loop-parens-around-head.rs
+++ b/tests/ui/parser/recover/recover-for-loop-parens-around-head.rs
diff --git a/tests/ui/parser/recover-for-loop-parens-around-head.stderr b/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr
index 3bad29f20af..3bad29f20af 100644
--- a/tests/ui/parser/recover-for-loop-parens-around-head.stderr
+++ b/tests/ui/parser/recover/recover-for-loop-parens-around-head.stderr
diff --git a/tests/ui/parser/recover-from-bad-variant.rs b/tests/ui/parser/recover/recover-from-bad-variant.rs
index e8887147cbc..e8887147cbc 100644
--- a/tests/ui/parser/recover-from-bad-variant.rs
+++ b/tests/ui/parser/recover/recover-from-bad-variant.rs
diff --git a/tests/ui/parser/recover-from-bad-variant.stderr b/tests/ui/parser/recover/recover-from-bad-variant.stderr
index 04968bbdf99..04968bbdf99 100644
--- a/tests/ui/parser/recover-from-bad-variant.stderr
+++ b/tests/ui/parser/recover/recover-from-bad-variant.stderr
diff --git a/tests/ui/parser/recover-from-homoglyph.rs b/tests/ui/parser/recover/recover-from-homoglyph.rs
index 99ce0d1a630..99ce0d1a630 100644
--- a/tests/ui/parser/recover-from-homoglyph.rs
+++ b/tests/ui/parser/recover/recover-from-homoglyph.rs
diff --git a/tests/ui/parser/recover-from-homoglyph.stderr b/tests/ui/parser/recover/recover-from-homoglyph.stderr
index f11ca9fd584..f11ca9fd584 100644
--- a/tests/ui/parser/recover-from-homoglyph.stderr
+++ b/tests/ui/parser/recover/recover-from-homoglyph.stderr
diff --git a/tests/ui/parser/recover-labeled-non-block-expr.fixed b/tests/ui/parser/recover/recover-labeled-non-block-expr.fixed
index c2e76444d11..c2e76444d11 100644
--- a/tests/ui/parser/recover-labeled-non-block-expr.fixed
+++ b/tests/ui/parser/recover/recover-labeled-non-block-expr.fixed
diff --git a/tests/ui/parser/recover-labeled-non-block-expr.rs b/tests/ui/parser/recover/recover-labeled-non-block-expr.rs
index fc11c646a8c..fc11c646a8c 100644
--- a/tests/ui/parser/recover-labeled-non-block-expr.rs
+++ b/tests/ui/parser/recover/recover-labeled-non-block-expr.rs
diff --git a/tests/ui/parser/recover-labeled-non-block-expr.stderr b/tests/ui/parser/recover/recover-labeled-non-block-expr.stderr
index d66ce695090..d66ce695090 100644
--- a/tests/ui/parser/recover-labeled-non-block-expr.stderr
+++ b/tests/ui/parser/recover/recover-labeled-non-block-expr.stderr
diff --git a/tests/ui/parser/recover-missing-semi-before-item.fixed b/tests/ui/parser/recover/recover-missing-semi-before-item.fixed
index acb846373cb..acb846373cb 100644
--- a/tests/ui/parser/recover-missing-semi-before-item.fixed
+++ b/tests/ui/parser/recover/recover-missing-semi-before-item.fixed
diff --git a/tests/ui/parser/recover-missing-semi-before-item.rs b/tests/ui/parser/recover/recover-missing-semi-before-item.rs
index ef6cfe3c4ed..ef6cfe3c4ed 100644
--- a/tests/ui/parser/recover-missing-semi-before-item.rs
+++ b/tests/ui/parser/recover/recover-missing-semi-before-item.rs
diff --git a/tests/ui/parser/recover-missing-semi-before-item.stderr b/tests/ui/parser/recover/recover-missing-semi-before-item.stderr
index 61c43f2f189..61c43f2f189 100644
--- a/tests/ui/parser/recover-missing-semi-before-item.stderr
+++ b/tests/ui/parser/recover/recover-missing-semi-before-item.stderr
diff --git a/tests/ui/parser/recover-missing-semi.rs b/tests/ui/parser/recover/recover-missing-semi.rs
index f47d5e6805f..f47d5e6805f 100644
--- a/tests/ui/parser/recover-missing-semi.rs
+++ b/tests/ui/parser/recover/recover-missing-semi.rs
diff --git a/tests/ui/parser/recover-missing-semi.stderr b/tests/ui/parser/recover/recover-missing-semi.stderr
index ba479828538..ba479828538 100644
--- a/tests/ui/parser/recover-missing-semi.stderr
+++ b/tests/ui/parser/recover/recover-missing-semi.stderr
diff --git a/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs b/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs
new file mode 100644
index 00000000000..9ed733bf079
--- /dev/null
+++ b/tests/ui/parser/recover/recover-parens-around-match-arm-head.rs
@@ -0,0 +1,14 @@
+fn main() {
+    let val = 42;
+    let x = match val {
+        (0 if true) => {
+        //~^ ERROR expected identifier, found keyword `if`
+        //~| ERROR expected one of `)`, `,`, `...`, `..=`, `..`, or `|`, found keyword `if`
+        //~| ERROR expected one of `)`, `,`, `@`, or `|`, found keyword `true`
+        //~| ERROR mismatched types
+            42u8
+        }
+        _ => 0u8,
+    };
+    let _y: u32 = x; //~ ERROR mismatched types
+}
diff --git a/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr b/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr
new file mode 100644
index 00000000000..6542f440e4b
--- /dev/null
+++ b/tests/ui/parser/recover/recover-parens-around-match-arm-head.stderr
@@ -0,0 +1,49 @@
+error: expected identifier, found keyword `if`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:12
+   |
+LL |         (0 if true) => {
+   |            ^^ expected identifier, found keyword
+
+error: expected one of `)`, `,`, `...`, `..=`, `..`, or `|`, found keyword `if`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:12
+   |
+LL |         (0 if true) => {
+   |           -^^ expected one of `)`, `,`, `...`, `..=`, `..`, or `|`
+   |           |
+   |           help: missing `,`
+
+error: expected one of `)`, `,`, `@`, or `|`, found keyword `true`
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:15
+   |
+LL |         (0 if true) => {
+   |              -^^^^ expected one of `)`, `,`, `@`, or `|`
+   |              |
+   |              help: missing `,`
+
+error[E0308]: mismatched types
+  --> $DIR/recover-parens-around-match-arm-head.rs:4:9
+   |
+LL |     let x = match val {
+   |                   --- this expression has type `{integer}`
+LL |         (0 if true) => {
+   |         ^^^^^^^^^^^ expected integer, found `(_, _, _)`
+   |
+   = note: expected type `{integer}`
+             found tuple `(_, _, _)`
+
+error[E0308]: mismatched types
+  --> $DIR/recover-parens-around-match-arm-head.rs:13:19
+   |
+LL |     let _y: u32 = x;
+   |             ---   ^ expected `u32`, found `u8`
+   |             |
+   |             expected due to this
+   |
+help: you can convert a `u8` to a `u32`
+   |
+LL |     let _y: u32 = x.into();
+   |                    +++++++
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/parser/recover-quantified-closure.rs b/tests/ui/parser/recover/recover-quantified-closure.rs
index 10af39b7007..10af39b7007 100644
--- a/tests/ui/parser/recover-quantified-closure.rs
+++ b/tests/ui/parser/recover/recover-quantified-closure.rs
diff --git a/tests/ui/parser/recover-quantified-closure.stderr b/tests/ui/parser/recover/recover-quantified-closure.stderr
index 37e93cbee7b..37e93cbee7b 100644
--- a/tests/ui/parser/recover-quantified-closure.stderr
+++ b/tests/ui/parser/recover/recover-quantified-closure.stderr
diff --git a/tests/ui/parser/recover-range-pats.rs b/tests/ui/parser/recover/recover-range-pats.rs
index 156c7ad94d3..156c7ad94d3 100644
--- a/tests/ui/parser/recover-range-pats.rs
+++ b/tests/ui/parser/recover/recover-range-pats.rs
diff --git a/tests/ui/parser/recover-range-pats.stderr b/tests/ui/parser/recover/recover-range-pats.stderr
index 5b69ca5cd6d..5b69ca5cd6d 100644
--- a/tests/ui/parser/recover-range-pats.stderr
+++ b/tests/ui/parser/recover/recover-range-pats.stderr
diff --git a/tests/ui/parser/recover-ref-dyn-mut.rs b/tests/ui/parser/recover/recover-ref-dyn-mut.rs
index 3016275cc0f..3016275cc0f 100644
--- a/tests/ui/parser/recover-ref-dyn-mut.rs
+++ b/tests/ui/parser/recover/recover-ref-dyn-mut.rs
diff --git a/tests/ui/parser/recover-ref-dyn-mut.stderr b/tests/ui/parser/recover/recover-ref-dyn-mut.stderr
index c048c8ea1b0..c048c8ea1b0 100644
--- a/tests/ui/parser/recover-ref-dyn-mut.stderr
+++ b/tests/ui/parser/recover/recover-ref-dyn-mut.stderr
diff --git a/tests/ui/parser/recover-struct.rs b/tests/ui/parser/recover/recover-struct.rs
index bfa5b454c0a..bfa5b454c0a 100644
--- a/tests/ui/parser/recover-struct.rs
+++ b/tests/ui/parser/recover/recover-struct.rs
diff --git a/tests/ui/parser/recover-struct.stderr b/tests/ui/parser/recover/recover-struct.stderr
index 9f6fb06caa3..9f6fb06caa3 100644
--- a/tests/ui/parser/recover-struct.stderr
+++ b/tests/ui/parser/recover/recover-struct.stderr
diff --git a/tests/ui/parser/recover-tuple-pat.rs b/tests/ui/parser/recover/recover-tuple-pat.rs
index 7fded752d67..7fded752d67 100644
--- a/tests/ui/parser/recover-tuple-pat.rs
+++ b/tests/ui/parser/recover/recover-tuple-pat.rs
diff --git a/tests/ui/parser/recover-tuple-pat.stderr b/tests/ui/parser/recover/recover-tuple-pat.stderr
index 93a6a66a630..93a6a66a630 100644
--- a/tests/ui/parser/recover-tuple-pat.stderr
+++ b/tests/ui/parser/recover/recover-tuple-pat.stderr
diff --git a/tests/ui/parser/recover-tuple.rs b/tests/ui/parser/recover/recover-tuple.rs
index 59e2695dec6..59e2695dec6 100644
--- a/tests/ui/parser/recover-tuple.rs
+++ b/tests/ui/parser/recover/recover-tuple.rs
diff --git a/tests/ui/parser/recover-tuple.stderr b/tests/ui/parser/recover/recover-tuple.stderr
index 88891b54bb2..88891b54bb2 100644
--- a/tests/ui/parser/recover-tuple.stderr
+++ b/tests/ui/parser/recover/recover-tuple.stderr
diff --git a/tests/ui/parser/recover-unticked-labels.fixed b/tests/ui/parser/recover/recover-unticked-labels.fixed
index 159d995b8da..159d995b8da 100644
--- a/tests/ui/parser/recover-unticked-labels.fixed
+++ b/tests/ui/parser/recover/recover-unticked-labels.fixed
diff --git a/tests/ui/parser/recover-unticked-labels.rs b/tests/ui/parser/recover/recover-unticked-labels.rs
index 56034de6844..56034de6844 100644
--- a/tests/ui/parser/recover-unticked-labels.rs
+++ b/tests/ui/parser/recover/recover-unticked-labels.rs
diff --git a/tests/ui/parser/recover-unticked-labels.stderr b/tests/ui/parser/recover/recover-unticked-labels.stderr
index fbd108ca613..fbd108ca613 100644
--- a/tests/ui/parser/recover-unticked-labels.stderr
+++ b/tests/ui/parser/recover/recover-unticked-labels.stderr
diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.fixed
index 227c40e97c0..227c40e97c0 100644
--- a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.fixed
+++ b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.fixed
diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.rs
index 3699e6fe572..3699e6fe572 100644
--- a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.rs
+++ b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.rs
diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.stderr
index 18aa5fadb6b..18aa5fadb6b 100644
--- a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-0.stderr
+++ b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-0.stderr
diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.rs
index f515ae81e51..f515ae81e51 100644
--- a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.rs
+++ b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.rs
diff --git a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.stderr
index 2219c2a7316..2219c2a7316 100644
--- a/tests/ui/parser/recover-where-clause-before-tuple-struct-body-1.stderr
+++ b/tests/ui/parser/recover/recover-where-clause-before-tuple-struct-body-1.stderr
diff --git a/tests/ui/self/self_type_keyword.stderr b/tests/ui/self/self_type_keyword.stderr
index 6e65fae808d..fed853a7e1f 100644
--- a/tests/ui/self/self_type_keyword.stderr
+++ b/tests/ui/self/self_type_keyword.stderr
@@ -14,7 +14,7 @@ error: `mut` must be followed by a named binding
   --> $DIR/self_type_keyword.rs:16:9
    |
 LL |         mut Self => (),
-   |         ^^^^^^^^ help: remove the `mut` prefix: `Self`
+   |         ^^^^ help: remove the `mut` prefix
    |
    = note: `mut` may be followed by `variable` and `variable @ pattern`