|
@@ -13,16 +13,16 @@
|
|
|
extern crate syntax;
|
|
|
extern crate rustc;
|
|
|
|
|
|
-use syntax::ast::{MetaItem, Item, Expr};
|
|
|
+use syntax::ast::{MetaItem, Expr};
|
|
|
use syntax::ast;
|
|
|
use syntax::codemap::Span;
|
|
|
-use syntax::ext::base::ExtCtxt;
|
|
|
+use syntax::ext::base::{ExtCtxt, Annotatable};
|
|
|
use syntax::ext::build::AstBuilder;
|
|
|
use syntax::ext::deriving::generic::*;
|
|
|
use syntax::ext::deriving::generic::ty::*;
|
|
|
use syntax::parse::token::InternedString;
|
|
|
use syntax::ptr::P;
|
|
|
-use syntax::ext::base::Decorator;
|
|
|
+use syntax::ext::base::MultiDecorator;
|
|
|
use syntax::parse::token;
|
|
|
|
|
|
use rustc::plugin::Registry;
|
|
@@ -64,8 +64,8 @@ macro_rules! path_std {
|
|
|
pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt,
|
|
|
span: Span,
|
|
|
mitem: &MetaItem,
|
|
|
- item: &Item,
|
|
|
- push: &mut FnMut(P<Item>))
|
|
|
+ item: Annotatable,
|
|
|
+ push: &mut FnMut(Annotatable))
|
|
|
{
|
|
|
let inline = cx.meta_word(span, InternedString::new("inline"));
|
|
|
let attrs = vec!(cx.attribute(span, inline));
|
|
@@ -110,7 +110,7 @@ pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt,
|
|
|
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> {
|
|
@@ -196,5 +196,5 @@ fn cs_from(name: &str, cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure
|
|
|
pub fn plugin_registrar(reg: &mut Registry) {
|
|
|
reg.register_syntax_extension(
|
|
|
token::intern("derive_NumFromPrimitive"),
|
|
|
- Decorator(Box::new(expand_deriving_from_primitive)));
|
|
|
+ MultiDecorator(Box::new(expand_deriving_from_primitive)));
|
|
|
}
|