]> git.lizzy.rs Git - rust.git/blob - mini-macro/src/lib.rs
don't depend on regex_macros anymore
[rust.git] / mini-macro / src / lib.rs
1 #![feature(plugin_registrar, rustc_private)]
2
3 extern crate syntax;
4 extern crate rustc;
5 extern crate rustc_plugin;
6
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;
12
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))
17 }
18
19 #[plugin_registrar]
20 pub fn plugin_registrar(reg: &mut Registry) {
21     reg.register_macro("mini_macro", expand_macro);
22 }