]> git.proxmox.com Git - rustc.git/blobdiff - src/test/auxiliary/custom_derive_plugin.rs
Imported Upstream version 1.1.0+dfsg1
[rustc.git] / src / test / auxiliary / custom_derive_plugin.rs
index e26889648048086bb2f5add486107eb6ace644b6..0edbeb2d02ca4ccdb917b30b22d151d9f3229a68 100644 (file)
@@ -19,7 +19,7 @@ extern crate rustc;
 
 use syntax::ast;
 use syntax::codemap::Span;
-use syntax::ext::base::{Decorator, ExtCtxt};
+use syntax::ext::base::{MultiDecorator, ExtCtxt, Annotatable};
 use syntax::ext::build::AstBuilder;
 use syntax::ext::deriving::generic::{cs_fold, TraitDef, MethodDef, combine_substructure};
 use syntax::ext::deriving::generic::ty::{Literal, LifetimeBounds, Path, borrowed_explicit_self};
@@ -31,14 +31,14 @@ use rustc::plugin::Registry;
 pub fn plugin_registrar(reg: &mut Registry) {
     reg.register_syntax_extension(
         token::intern("derive_TotalSum"),
-        Decorator(box expand));
+        MultiDecorator(box expand));
 }
 
 fn expand(cx: &mut ExtCtxt,
           span: Span,
           mitem: &ast::MetaItem,
-          item: &ast::Item,
-          push: &mut FnMut(P<ast::Item>)) {
+          item: Annotatable,
+          push: &mut FnMut(Annotatable)) {
     let trait_def = TraitDef {
         span: span,
         attributes: vec![],
@@ -55,7 +55,7 @@ fn expand(cx: &mut ExtCtxt,
                 ret_ty: Literal(Path::new_local("isize")),
                 attributes: vec![],
                 combine_substructure: combine_substructure(box |cx, span, substr| {
-                    let zero = cx.expr_int(span, 0);
+                    let zero = cx.expr_isize(span, 0);
                     cs_fold(false,
                             |cx, span, subexpr, field, _| {
                                 cx.expr_binary(span, ast::BiAdd, subexpr,
@@ -70,5 +70,5 @@ fn expand(cx: &mut ExtCtxt,
         ],
     };
 
-    trait_def.expand(cx, mitem, item, |i| push(i))
+    trait_def.expand(cx, mitem, &item, push)
 }