rust/src/comp/syntax/ext/concat_idents.rs

25 lines
717 B
Rust
Raw Normal View History

import std::option;
import base::*;
import syntax::ast;
fn expand_syntax_ext(cx: &ext_ctxt, sp: codemap::span, arg: @ast::expr,
_body: &option::t<istr>) -> @ast::expr {
let args: [@ast::expr] =
alt arg.node {
ast::expr_vec(elts, _) { elts }
_ {
cx.span_fatal(sp, ~"#concat_idents requires a vector argument .")
}
};
2011-08-26 00:00:12 +00:00
let res: ast::ident = ~"";
for e: @ast::expr in args {
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};
}