mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 11:07:42 +00:00
Rollup merge of #91385 - ecstatic-morse:pat-param-spec-suggest, r=estebank
Suggest the `pat_param` specifier before `|` on 2021 edition Ran into this today after writing some Rust for the first time in a while. r? `@estebank`
This commit is contained in:
commit
2b64476b9c
@ -1027,6 +1027,24 @@ fn check_matcher_core(
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
err.span_label(sp, format!("not allowed after `{}` fragments", kind));
|
err.span_label(sp, format!("not allowed after `{}` fragments", kind));
|
||||||
|
|
||||||
|
if kind == NonterminalKind::PatWithOr
|
||||||
|
&& sess.edition == Edition::Edition2021
|
||||||
|
&& next_token.is_token(&BinOp(token::BinOpToken::Or))
|
||||||
|
{
|
||||||
|
let suggestion = quoted_tt_to_string(&TokenTree::MetaVarDecl(
|
||||||
|
span,
|
||||||
|
name,
|
||||||
|
Some(NonterminalKind::PatParam { inferred: false }),
|
||||||
|
));
|
||||||
|
err.span_suggestion(
|
||||||
|
span,
|
||||||
|
&format!("try a `pat_param` fragment specifier instead"),
|
||||||
|
suggestion,
|
||||||
|
Applicability::MaybeIncorrect,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let msg = "allowed there are: ";
|
let msg = "allowed there are: ";
|
||||||
match possible {
|
match possible {
|
||||||
&[] => {}
|
&[] => {}
|
||||||
|
@ -2,7 +2,9 @@ error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
|||||||
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:3:28
|
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:3:28
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
||||||
| ^ not allowed after `pat` fragments
|
| ------ ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$x:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
@ -10,7 +12,9 @@ error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
|||||||
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:4:32
|
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:4:32
|
||||||
|
|
|
|
||||||
LL | macro_rules! bar { ($($x:pat)+ | $($y:pat)+) => {} }
|
LL | macro_rules! bar { ($($x:pat)+ | $($y:pat)+) => {} }
|
||||||
| ^ not allowed after `pat` fragments
|
| ------ ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$x:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
@ -18,7 +22,9 @@ error: `$pat:pat` may be followed by `|`, which is not allowed for `pat` fragmen
|
|||||||
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:7:36
|
--> $DIR/macro-pat-pattern-followed-by-or-in-2021.rs:7:36
|
||||||
|
|
|
|
||||||
LL | ( $expr:expr , $( $( $pat:pat )|+ => $expr_arm:expr ),+ ) => {
|
LL | ( $expr:expr , $( $( $pat:pat )|+ => $expr_arm:expr ),+ ) => {
|
||||||
| ^ not allowed after `pat` fragments
|
| -------- ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$pat:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
|
@ -2,7 +2,9 @@ error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
|||||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:4:28
|
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:4:28
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
||||||
| ^ not allowed after `pat` fragments
|
| ------ ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$x:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
@ -10,7 +12,9 @@ error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
|||||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:7:28
|
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:7:28
|
||||||
|
|
|
|
||||||
LL | macro_rules! ogg { ($x:pat | $y:pat_param) => {} }
|
LL | macro_rules! ogg { ($x:pat | $y:pat_param) => {} }
|
||||||
| ^ not allowed after `pat` fragments
|
| ------ ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$x:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
@ -18,7 +22,9 @@ error: `$pat:pat` may be followed by `|`, which is not allowed for `pat` fragmen
|
|||||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:9:35
|
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:9:35
|
||||||
|
|
|
|
||||||
LL | ( $expr:expr , $( $( $pat:pat)|+ => $expr_arm:pat),+ ) => {
|
LL | ( $expr:expr , $( $( $pat:pat)|+ => $expr_arm:pat),+ ) => {
|
||||||
| ^ not allowed after `pat` fragments
|
| -------- ^ not allowed after `pat` fragments
|
||||||
|
| |
|
||||||
|
| help: try a `pat_param` fragment specifier instead: `$pat:pat_param`
|
||||||
|
|
|
|
||||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user