Generalize and abstract ThinAttributes
This commit is contained in:
@@ -20,7 +20,6 @@
|
||||
|
||||
use ast::*;
|
||||
use ast;
|
||||
use attr::{ThinAttributes, ThinAttributesExt};
|
||||
use codemap::{respan, Span, Spanned};
|
||||
use parse::token::{self, keywords};
|
||||
use ptr::P;
|
||||
@@ -336,8 +335,8 @@ pub fn fold_attrs<T: Folder>(attrs: Vec<Attribute>, fld: &mut T) -> Vec<Attribut
|
||||
attrs.move_flat_map(|x| fld.fold_attribute(x))
|
||||
}
|
||||
|
||||
pub fn fold_thin_attrs<T: Folder>(attrs: ThinAttributes, fld: &mut T) -> ThinAttributes {
|
||||
attrs.map_thin_attrs(|v| fold_attrs(v, fld))
|
||||
pub fn fold_thin_attrs<T: Folder>(attrs: ThinVec<Attribute>, fld: &mut T) -> ThinVec<Attribute> {
|
||||
fold_attrs(attrs.into(), fld).into()
|
||||
}
|
||||
|
||||
pub fn noop_fold_arm<T: Folder>(Arm {attrs, pats, guard, body}: Arm, fld: &mut T) -> Arm {
|
||||
@@ -498,7 +497,7 @@ pub fn noop_fold_local<T: Folder>(l: P<Local>, fld: &mut T) -> P<Local> {
|
||||
pat: fld.fold_pat(pat),
|
||||
init: init.map(|e| fld.fold_expr(e)),
|
||||
span: fld.new_span(span),
|
||||
attrs: attrs.map_thin_attrs(|v| fold_attrs(v, fld)),
|
||||
attrs: fold_attrs(attrs.into(), fld).into(),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1300,7 +1299,7 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span, attrs}: Expr, folder: &mu
|
||||
ExprKind::Try(ex) => ExprKind::Try(folder.fold_expr(ex)),
|
||||
},
|
||||
span: folder.new_span(span),
|
||||
attrs: attrs.map_thin_attrs(|v| fold_attrs(v, folder)),
|
||||
attrs: fold_attrs(attrs.into(), folder).into(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1348,7 +1347,7 @@ pub fn noop_fold_stmt<T: Folder>(Spanned {node, span}: Stmt, folder: &mut T)
|
||||
StmtKind::Mac(mac, semi, attrs) => SmallVector::one(Spanned {
|
||||
node: StmtKind::Mac(mac.map(|m| folder.fold_mac(m)),
|
||||
semi,
|
||||
attrs.map_thin_attrs(|v| fold_attrs(v, folder))),
|
||||
fold_attrs(attrs.into(), folder).into()),
|
||||
span: span
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user