convert SyntaxExtensions's key to a @~str
This commit is contained in:
parent
de5fdaf934
commit
e95f21f7be
@ -75,7 +75,7 @@ pub enum SyntaxExtension {
|
||||
ItemTT(SyntaxExpanderTTItem),
|
||||
}
|
||||
|
||||
type SyntaxExtensions = HashMap<~str, SyntaxExtension>;
|
||||
type SyntaxExtensions = HashMap<@~str, SyntaxExtension>;
|
||||
|
||||
// A temporary hard-coded map of methods for expanding syntax extension
|
||||
// AST nodes into full ASTs
|
||||
@ -89,74 +89,74 @@ pub fn syntax_expander_table() -> SyntaxExtensions {
|
||||
ItemTT(SyntaxExpanderTTItem{expander: f, span: None})
|
||||
}
|
||||
let syntax_expanders = HashMap();
|
||||
syntax_expanders.insert(~"macro_rules",
|
||||
syntax_expanders.insert(@~"macro_rules",
|
||||
builtin_item_tt(
|
||||
ext::tt::macro_rules::add_new_extension));
|
||||
syntax_expanders.insert(~"fmt",
|
||||
syntax_expanders.insert(@~"fmt",
|
||||
builtin_normal_tt(ext::fmt::expand_syntax_ext));
|
||||
syntax_expanders.insert(
|
||||
~"auto_encode",
|
||||
@~"auto_encode",
|
||||
ItemDecorator(ext::auto_encode::expand_auto_encode));
|
||||
syntax_expanders.insert(
|
||||
~"auto_decode",
|
||||
@~"auto_decode",
|
||||
ItemDecorator(ext::auto_encode::expand_auto_decode));
|
||||
syntax_expanders.insert(~"env",
|
||||
syntax_expanders.insert(@~"env",
|
||||
builtin_normal_tt(ext::env::expand_syntax_ext));
|
||||
syntax_expanders.insert(~"concat_idents",
|
||||
syntax_expanders.insert(@~"concat_idents",
|
||||
builtin_normal_tt(
|
||||
ext::concat_idents::expand_syntax_ext));
|
||||
syntax_expanders.insert(~"log_syntax",
|
||||
syntax_expanders.insert(@~"log_syntax",
|
||||
builtin_normal_tt(
|
||||
ext::log_syntax::expand_syntax_ext));
|
||||
syntax_expanders.insert(~"deriving_eq",
|
||||
syntax_expanders.insert(@~"deriving_eq",
|
||||
ItemDecorator(
|
||||
ext::deriving::expand_deriving_eq));
|
||||
syntax_expanders.insert(~"deriving_iter_bytes",
|
||||
syntax_expanders.insert(@~"deriving_iter_bytes",
|
||||
ItemDecorator(
|
||||
ext::deriving::expand_deriving_iter_bytes));
|
||||
|
||||
// Quasi-quoting expanders
|
||||
syntax_expanders.insert(~"quote_tokens",
|
||||
syntax_expanders.insert(@~"quote_tokens",
|
||||
builtin_normal_tt(ext::quote::expand_quote_tokens));
|
||||
syntax_expanders.insert(~"quote_expr",
|
||||
syntax_expanders.insert(@~"quote_expr",
|
||||
builtin_normal_tt(ext::quote::expand_quote_expr));
|
||||
syntax_expanders.insert(~"quote_ty",
|
||||
syntax_expanders.insert(@~"quote_ty",
|
||||
builtin_normal_tt(ext::quote::expand_quote_ty));
|
||||
syntax_expanders.insert(~"quote_item",
|
||||
syntax_expanders.insert(@~"quote_item",
|
||||
builtin_normal_tt(ext::quote::expand_quote_item));
|
||||
syntax_expanders.insert(~"quote_pat",
|
||||
syntax_expanders.insert(@~"quote_pat",
|
||||
builtin_normal_tt(ext::quote::expand_quote_pat));
|
||||
syntax_expanders.insert(~"quote_stmt",
|
||||
syntax_expanders.insert(@~"quote_stmt",
|
||||
builtin_normal_tt(ext::quote::expand_quote_stmt));
|
||||
|
||||
syntax_expanders.insert(~"line",
|
||||
syntax_expanders.insert(@~"line",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_line));
|
||||
syntax_expanders.insert(~"col",
|
||||
syntax_expanders.insert(@~"col",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_col));
|
||||
syntax_expanders.insert(~"file",
|
||||
syntax_expanders.insert(@~"file",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_file));
|
||||
syntax_expanders.insert(~"stringify",
|
||||
syntax_expanders.insert(@~"stringify",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_stringify));
|
||||
syntax_expanders.insert(~"include",
|
||||
syntax_expanders.insert(@~"include",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_include));
|
||||
syntax_expanders.insert(~"include_str",
|
||||
syntax_expanders.insert(@~"include_str",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_include_str));
|
||||
syntax_expanders.insert(~"include_bin",
|
||||
syntax_expanders.insert(@~"include_bin",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_include_bin));
|
||||
syntax_expanders.insert(~"module_path",
|
||||
syntax_expanders.insert(@~"module_path",
|
||||
builtin_normal_tt(
|
||||
ext::source_util::expand_mod));
|
||||
syntax_expanders.insert(~"proto",
|
||||
syntax_expanders.insert(@~"proto",
|
||||
builtin_item_tt(ext::pipes::expand_proto));
|
||||
syntax_expanders.insert(
|
||||
~"trace_macros",
|
||||
@~"trace_macros",
|
||||
builtin_normal_tt(ext::trace_macros::expand_trace_macros));
|
||||
return syntax_expanders;
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ pub fn expand_expr(exts: SyntaxExtensions, cx: ext_ctxt,
|
||||
/* using idents and token::special_idents would make the
|
||||
the macro names be hygienic */
|
||||
let extname = cx.parse_sess().interner.get(pth.idents[0]);
|
||||
match exts.find(extname) {
|
||||
match exts.find(&extname) {
|
||||
None => {
|
||||
cx.span_fatal(pth.span,
|
||||
fmt!("macro undefined: '%s'", *extname))
|
||||
@ -102,7 +102,7 @@ pub fn expand_mod_items(exts: SyntaxExtensions, cx: ext_ctxt,
|
||||
do vec::foldr(item.attrs, ~[*item]) |attr, items| {
|
||||
let mname = attr::get_attr_name(attr);
|
||||
|
||||
match exts.find(&*mname) {
|
||||
match exts.find(&mname) {
|
||||
None | Some(NormalTT(_)) | Some(ItemTT(*)) => items,
|
||||
Some(ItemDecorator(dec_fn)) => {
|
||||
cx.bt_push(ExpandedFrom({call_site: attr.span,
|
||||
@ -159,7 +159,7 @@ pub fn expand_item_mac(exts: SyntaxExtensions,
|
||||
};
|
||||
|
||||
let extname = cx.parse_sess().interner.get(pth.idents[0]);
|
||||
let expanded = match exts.find(extname) {
|
||||
let expanded = match exts.find(&extname) {
|
||||
None => cx.span_fatal(pth.span,
|
||||
fmt!("macro undefined: '%s!'", *extname)),
|
||||
|
||||
@ -198,7 +198,7 @@ pub fn expand_item_mac(exts: SyntaxExtensions,
|
||||
MRAny(_, item_maker, _) =>
|
||||
option::chain(item_maker(), |i| {fld.fold_item(i)}),
|
||||
MRDef(ref mdef) => {
|
||||
exts.insert((*mdef).name, (*mdef).ext);
|
||||
exts.insert(@/*bad*/ copy mdef.name, (*mdef).ext);
|
||||
None
|
||||
}
|
||||
};
|
||||
@ -222,7 +222,7 @@ pub fn expand_stmt(exts: SyntaxExtensions, cx: ext_ctxt,
|
||||
|
||||
assert(vec::len(pth.idents) == 1u);
|
||||
let extname = cx.parse_sess().interner.get(pth.idents[0]);
|
||||
let (fully_expanded, sp) = match exts.find(extname) {
|
||||
let (fully_expanded, sp) = match exts.find(&extname) {
|
||||
None =>
|
||||
cx.span_fatal(pth.span, fmt!("macro undefined: '%s'", *extname)),
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user