diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-08-08 18:24:00 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-08-09 08:20:13 -0700 |
| commit | 7c96d90c2081f3ca84b3786a125cf2c415335e40 (patch) | |
| tree | 7b9bc7f69a5a318efb6388ebd41eff8ae03fa1a9 /src/libsyntax/ext/tt | |
| parent | 813a3a5d4b2be4e2101faa73a067da02a704a598 (diff) | |
| download | rust-7c96d90c2081f3ca84b3786a125cf2c415335e40.tar.gz rust-7c96d90c2081f3ca84b3786a125cf2c415335e40.zip | |
More explicit diagnostic when using a `vec![]` in a pattern
``` error: unexpected `(` after qualified path --> $DIR/vec-macro-in-pattern.rs:3:14 | LL | Some(vec![x]) => (), | ^^^^^^^ | | | unexpected `(` after qualified path | in this macro invocation | use a slice pattern here instead | = help: for more information, see https://doc.rust-lang.org/edition-guide/rust-2018/slice-patterns.html = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) ```
Diffstat (limited to 'src/libsyntax/ext/tt')
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 7401f256412..a9d0b739d6a 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -70,6 +70,29 @@ impl<'a> ParserAnyMacro<'a> { } else if !parser.sess.source_map().span_to_filename(parser.token.span).is_real() { e.span_label(site_span, "in this macro invocation"); } + match kind { + AstFragmentKind::Ty => { + e.span_label( + site_span, + "this macro call doesn't expand to a type", + ); + } + AstFragmentKind::Pat if macro_ident.name == sym::vec => { + e.span_label( + site_span, + "use a slice pattern here instead", + ); + e.help("for more information, see https://doc.rust-lang.org/edition-guide/\ + rust-2018/slice-patterns.html"); + } + AstFragmentKind::Pat => { + e.span_label( + site_span, + "this macro call doesn't expand to a pattern", + ); + } + _ => {} + }; e })); |
