ecx: &mut ExtCtxt,
sp: Span,
meta_item: &ast::MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable));
}
impl<F> MultiItemDecorator for F
- where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, Annotatable, &mut FnMut(Annotatable))
+ where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &Annotatable, &mut FnMut(Annotatable))
{
fn expand(&self,
ecx: &mut ExtCtxt,
sp: Span,
meta_item: &ast::MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable)) {
(*self)(ecx, sp, meta_item, item, push)
}
pub fn expand_deriving_unsafe_bound(cx: &mut ExtCtxt,
span: Span,
_: &MetaItem,
- _: Annotatable,
+ _: &Annotatable,
_: &mut FnMut(Annotatable))
{
cx.span_err(span, "this unsafe trait should be implemented explicitly");
pub fn expand_deriving_copy(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
let path = Path::new(vec![
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push);
+ trait_def.expand(cx, mitem, item, push);
}
pub fn expand_deriving_clone(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
let inline = cx.meta_word(span, InternedString::new("inline"));
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn cs_clone(
pub fn expand_deriving_eq(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
fn cs_total_eq_assert(cx: &mut ExtCtxt, span: Span, substr: &Substructure) -> P<Expr> {
),
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
pub fn expand_deriving_ord(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
let inline = cx.meta_word(span, InternedString::new("inline"));
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
pub fn expand_deriving_partial_eq(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
// structures are equal if all fields are equal, and non equal, if
),
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
pub fn expand_deriving_partial_ord(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
macro_rules! md {
],
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
#[derive(Copy, Clone)]
pub fn expand_deriving_rustc_decodable(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
expand_deriving_decodable_imp(cx, span, mitem, item, push, "rustc_serialize")
pub fn expand_deriving_decodable(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
expand_deriving_decodable_imp(cx, span, mitem, item, push, "serialize")
fn expand_deriving_decodable_imp(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable),
krate: &'static str)
{
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn decodable_substructure(cx: &mut ExtCtxt, trait_span: Span,
pub fn expand_deriving_default(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
let inline = cx.meta_word(span, InternedString::new("inline"));
),
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn default_substructure(cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure) -> P<Expr> {
pub fn expand_deriving_rustc_encodable(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
expand_deriving_encodable_imp(cx, span, mitem, item, push, "rustc_serialize")
pub fn expand_deriving_encodable(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
expand_deriving_encodable_imp(cx, span, mitem, item, push, "serialize")
fn expand_deriving_encodable_imp(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable),
krate: &'static str)
{
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn encodable_substructure(cx: &mut ExtCtxt, trait_span: Span,
pub fn expand_deriving_hash(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
associated_types: Vec::new(),
};
- hash_trait_def.expand(cx, mitem, &item, push);
+ hash_trait_def.expand(cx, mitem, item, push);
}
fn hash_substructure(cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure) -> P<Expr> {
ecx: &mut ExtCtxt,
sp: Span,
mitem: &MetaItem,
- annotatable: Annotatable,
+ annotatable: &Annotatable,
push: &mut FnMut(Annotatable)) {
warn_if_deprecated(ecx, sp, $name);
$func(ecx, sp, mitem, annotatable, push);
pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
let inline = cx.meta_word(span, InternedString::new("inline"));
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn cs_from(name: &str, cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure) -> P<Expr> {
pub fn expand_deriving_show(cx: &mut ExtCtxt,
span: Span,
mitem: &MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable))
{
// &mut ::std::fmt::Formatter
],
associated_types: Vec::new(),
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
/// We use the debug builders to do the heavy lifting here
dec.expand(fld.cx,
attr.span,
&attr.node.value,
- a.clone(),
+ &a,
&mut |ann| items.push(ann));
decorator_items.extend(items.into_iter()
.flat_map(|ann| expand_annotatable(ann, fld).into_iter()));
fn expand(cx: &mut ExtCtxt,
span: Span,
mitem: &ast::MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable)) {
let trait_def = TraitDef {
span: span,
],
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
fn expand(cx: &mut ExtCtxt,
span: Span,
mitem: &ast::MetaItem,
- item: Annotatable,
+ item: &Annotatable,
push: &mut FnMut(Annotatable)) {
let trait_def = TraitDef {
span: span,
],
};
- trait_def.expand(cx, mitem, &item, push)
+ trait_def.expand(cx, mitem, item, push)
}
// Mostly copied from syntax::ext::deriving::hash
fn expand_duplicate(cx: &mut ExtCtxt,
sp: Span,
mi: &MetaItem,
- it: Annotatable,
+ it: &Annotatable,
push: &mut FnMut(Annotatable))
{
let copy_name = match mi.node {