diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs index 5e73472c842e6..ab18e40482ec1 100644 --- a/compiler/rustc_parse/src/parser/item.rs +++ b/compiler/rustc_parse/src/parser/item.rs @@ -1450,6 +1450,8 @@ impl<'a> Parser<'a> { self.recover_diff_marker(); let variant_attrs = self.parse_outer_attributes()?; self.recover_diff_marker(); + let help = "enum variants can be `Variant`, `Variant = `, \ + `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`"; self.collect_tokens_trailing_token( variant_attrs, ForceCollect::No, @@ -1486,6 +1488,7 @@ impl<'a> Parser<'a> { this.eat_to_tokens(&[&token::CloseDelim(Delimiter::Brace)]); this.bump(); // } err.span_label(span, "while parsing this enum"); + err.help(help); err.emit(); (thin_vec![], true) } @@ -1502,6 +1505,7 @@ impl<'a> Parser<'a> { this.eat_to_tokens(&[&token::CloseDelim(Delimiter::Parenthesis)]); this.bump(); // ) err.span_label(span, "while parsing this enum"); + err.help(help); err.emit(); thin_vec![] } @@ -1527,8 +1531,9 @@ impl<'a> Parser<'a> { Ok((Some(vr), TrailingToken::MaybeComma)) }, - ).map_err(|mut err| { - err.help("enum variants can be `Variant`, `Variant = `, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`"); + ) + .map_err(|mut err| { + err.help(help); err }) } diff --git a/tests/ui/parser/issues/issue-68890.stderr b/tests/ui/parser/issues/issue-68890.stderr index 914c90565f501..43ed69dcf249a 100644 --- a/tests/ui/parser/issues/issue-68890.stderr +++ b/tests/ui/parser/issues/issue-68890.stderr @@ -11,6 +11,8 @@ LL | enum e{A((?'a a+?+l))} | - ^ expected one of `)`, `+`, or `,` | | | while parsing this enum + | + = help: enum variants can be `Variant`, `Variant = `, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }` error: expected item, found `)` --> $DIR/issue-68890.rs:1:21 diff --git a/tests/ui/parser/recover/recover-enum2.stderr b/tests/ui/parser/recover/recover-enum2.stderr index eb92145012473..132f84cc76b2f 100644 --- a/tests/ui/parser/recover/recover-enum2.stderr +++ b/tests/ui/parser/recover/recover-enum2.stderr @@ -13,6 +13,8 @@ LL | enum Test4 { | ----- while parsing this enum LL | Nope(i32 {}) | ^ expected one of 7 possible tokens + | + = help: enum variants can be `Variant`, `Variant = `, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }` error[E0308]: mismatched types --> $DIR/recover-enum2.rs:11:9