1 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
13 #![feature(plugin_registrar, quote, rustc_private)]
14 #![crate_type = "dylib"]
18 extern crate rustc_plugin
;
22 use syntax
::ext
::base
::{ExtCtxt, MacResult, MacEager}
;
23 use syntax
::util
::small_vector
::SmallVector
;
24 use rustc_plugin
::Registry
;
27 pub fn plugin_registrar(reg
: &mut Registry
) {
28 reg
.register_macro("multiple_items", expand
)
31 fn expand(cx
: &mut ExtCtxt
, _
: codemap
::Span
, _
: &[ast
::TokenTree
]) -> Box
<MacResult
+'
static> {
32 MacEager
::items(SmallVector
::many(vec
![
33 quote_item
!(cx
, struct Struct1
;).unwrap(),
34 quote_item
!(cx
, struct Struct2
;).unwrap()