expand/builtin_macros: Minor cleanup
This commit is contained in:
parent
3dbade652e
commit
eafeb9a267
@ -6,7 +6,7 @@
|
||||
|
||||
pub fn check_builtin_macro_attribute(ecx: &ExtCtxt<'_>, meta_item: &MetaItem, name: Symbol) {
|
||||
// All the built-in macro attributes are "words" at the moment.
|
||||
let template = AttributeTemplate::only_word();
|
||||
let template = AttributeTemplate { word: true, ..Default::default() };
|
||||
let attr = ecx.attribute(meta_item.clone());
|
||||
validate_attr::check_builtin_attribute(ecx.parse_sess, &attr, name, template);
|
||||
}
|
||||
|
@ -270,10 +270,9 @@ fn expand(
|
||||
) -> Vec<Annotatable>;
|
||||
}
|
||||
|
||||
impl<F, T> MultiItemModifier for F
|
||||
impl<F> MultiItemModifier for F
|
||||
where
|
||||
F: Fn(&mut ExtCtxt<'_>, Span, &ast::MetaItem, Annotatable) -> T,
|
||||
T: Into<Vec<Annotatable>>,
|
||||
F: Fn(&mut ExtCtxt<'_>, Span, &ast::MetaItem, Annotatable) -> Vec<Annotatable>,
|
||||
{
|
||||
fn expand(
|
||||
&self,
|
||||
@ -282,13 +281,7 @@ fn expand(
|
||||
meta_item: &ast::MetaItem,
|
||||
item: Annotatable,
|
||||
) -> Vec<Annotatable> {
|
||||
(*self)(ecx, span, meta_item, item).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<Vec<Annotatable>> for Annotatable {
|
||||
fn into(self) -> Vec<Annotatable> {
|
||||
vec![self]
|
||||
self(ecx, span, meta_item, item)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,19 +85,13 @@ fn is_deprecated(&self) -> bool {
|
||||
|
||||
/// A template that the attribute input must match.
|
||||
/// Only top-level shape (`#[attr]` vs `#[attr(...)]` vs `#[attr = ...]`) is considered now.
|
||||
#[derive(Clone, Copy)]
|
||||
#[derive(Clone, Copy, Default)]
|
||||
pub struct AttributeTemplate {
|
||||
pub word: bool,
|
||||
pub list: Option<&'static str>,
|
||||
pub name_value_str: Option<&'static str>,
|
||||
}
|
||||
|
||||
impl AttributeTemplate {
|
||||
pub fn only_word() -> Self {
|
||||
Self { word: true, list: None, name_value_str: None }
|
||||
}
|
||||
}
|
||||
|
||||
/// A convenience macro for constructing attribute templates.
|
||||
/// E.g., `template!(Word, List: "description")` means that the attribute
|
||||
/// supports forms `#[attr]` and `#[attr(description)]`.
|
||||
|
Loading…
Reference in New Issue
Block a user