diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-02-28 09:17:24 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-03-16 23:13:15 +0300 |
| commit | 8371caf5ee13e775d2b2dc64c9b08e37dab49eda (patch) | |
| tree | 630bb9b91f6f46469c6ec3eb51b21733c8e02e46 /src/libsyntax/ext | |
| parent | e2009ea5ffdacd767ea85d463fbe40d0e8b06951 (diff) | |
| download | rust-8371caf5ee13e775d2b2dc64c9b08e37dab49eda.tar.gz rust-8371caf5ee13e775d2b2dc64c9b08e37dab49eda.zip | |
syntax: Do not accidentally treat multi-segment meta-items as single-segment
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index bd64bb01021..12912044e4e 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -380,9 +380,14 @@ pub fn compile( .map(|attr| attr .meta_item_list() .map(|list| list.iter() - .map(|it| it.name().unwrap_or_else(|| sess.span_diagnostic.span_bug( - it.span, "allow internal unstable expects feature names", - ))) + .filter_map(|it| { + let name = it.ident().map(|ident| ident.name); + if name.is_none() { + sess.span_diagnostic.span_err(it.span(), + "allow internal unstable expects feature names") + } + name + }) .collect::<Vec<Symbol>>().into() ) .unwrap_or_else(|| { |
