diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-12-04 02:26:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-04 02:26:23 +0100 |
| commit | 2b64476b9c8161974c85d35cb29cfaa5f5cc136d (patch) | |
| tree | b33382a1f771362a886a9c9d28ee2f2739c5e8e6 /compiler/rustc_expand/src | |
| parent | 420ddd0b7e1912c780a6af514986eb9185ff776b (diff) | |
| parent | bfd95e1f0830b9ddc166161ab0d9ea5232f91e03 (diff) | |
| download | rust-2b64476b9c8161974c85d35cb29cfaa5f5cc136d.tar.gz rust-2b64476b9c8161974c85d35cb29cfaa5f5cc136d.zip | |
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`
Diffstat (limited to 'compiler/rustc_expand/src')
| -rw-r--r-- | compiler/rustc_expand/src/mbe/macro_rules.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/rustc_expand/src/mbe/macro_rules.rs b/compiler/rustc_expand/src/mbe/macro_rules.rs index f8491654f39..537a10e98e5 100644 --- a/compiler/rustc_expand/src/mbe/macro_rules.rs +++ b/compiler/rustc_expand/src/mbe/macro_rules.rs @@ -1027,6 +1027,24 @@ fn check_matcher_core( ), ); 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: "; match possible { &[] => {} |
