rust/src/librustsyntax/ext/concat_idents.rs

24 lines
744 B
Rust
Raw Normal View History

import base::*;
fn expand_syntax_ext(cx: ext_ctxt, sp: codemap::span, arg: ast::mac_arg,
_body: ast::mac_body) -> @ast::expr {
let arg = get_mac_arg(cx,sp,arg);
let args: [@ast::expr] =
alt arg.node {
ast::expr_vec(elts, _) { elts }
_ {
2011-09-02 17:34:58 -05:00
cx.span_fatal(sp, "#concat_idents requires a vector argument .")
}
};
let mut res: ast::ident = "";
for e: @ast::expr in args {
2011-09-02 17:34:58 -05:00
res += expr_to_ident(cx, e, "expected an ident");
}
ret @{id: cx.next_id(),
node: ast::expr_path(@{node: {global: false, idents: [res],
types: []},
span: sp}),
span: sp};
}