1 #![feature(plugin_registrar, rustc_private)]
5 extern crate rustc_plugin;
7 use syntax::codemap::Span;
8 use syntax::ast::TokenTree;
9 use syntax::ext::base::{ExtCtxt, MacResult, MacEager};
10 use syntax::ext::build::AstBuilder; // trait for expr_usize
11 use rustc_plugin::Registry;
13 fn expand_macro(cx: &mut ExtCtxt, sp: Span, _: &[TokenTree]) -> Box<MacResult + 'static> {
14 let e = cx.expr_usize(sp, 42);
15 let e = cx.expr_mut_addr_of(sp, e);
16 MacEager::expr(cx.expr_mut_addr_of(sp, e))
20 pub fn plugin_registrar(reg: &mut Registry) {
21 reg.register_macro("mini_macro", expand_macro);