diff options
Diffstat (limited to 'src/libsyntax/ext/expand.rs')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 51 |
1 files changed, 19 insertions, 32 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index d96fc27f3dd..380178191b7 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -54,8 +54,8 @@ pub fn expand_expr(e: @ast::Expr, fld: &mut MacroExpander) -> @ast::Expr { // let compilation continue return e; } - let extname = &pth.segments[0].identifier; - let extnamestr = token::get_ident(extname.name); + let extname = pth.segments[0].identifier; + let extnamestr = token::get_ident(extname); // leaving explicit deref here to highlight unbox op: let marked_after = match fld.extsbox.find(&extname.name) { None => { @@ -297,26 +297,25 @@ pub fn expand_item_mac(it: @ast::Item, fld: &mut MacroExpander) _ => fld.cx.span_bug(it.span, "invalid item macro invocation") }; - let extname = &pth.segments[0].identifier; - let extnamestr = token::get_ident(extname.name); + let extname = pth.segments[0].identifier; + let extnamestr = token::get_ident(extname); let fm = fresh_mark(); let expanded = match fld.extsbox.find(&extname.name) { None => { fld.cx.span_err(pth.span, format!("macro undefined: '{}!'", - extnamestr.get())); + extnamestr)); // let compilation continue return SmallVector::zero(); } Some(&NormalTT(ref expander, span)) => { if it.ident.name != parse::token::special_idents::invalid.name { - let string = token::get_ident(it.ident.name); fld.cx.span_err(pth.span, format!("macro {}! expects no ident argument, \ given '{}'", - extnamestr.get(), - string.get())); + extnamestr, + token::get_ident(it.ident))); return SmallVector::zero(); } fld.cx.bt_push(ExpnInfo { @@ -418,13 +417,10 @@ fn load_extern_macros(krate: &ast::ViewItem, fld: &mut MacroExpander) { let MacroCrate { lib, cnum } = fld.cx.loader.load_crate(krate); let crate_name = match krate.node { - ast::ViewItemExternMod(ref name, _, _) => { - let string = token::get_ident(name.name); - string.get().to_str() - }, - _ => unreachable!(), + ast::ViewItemExternMod(name, _, _) => name, + _ => unreachable!() }; - let name = format!("<{} macros>", crate_name); + let name = format!("<{} macros>", token::get_ident(crate_name)); let exported_macros = fld.cx.loader.get_exported_macros(cnum); for source in exported_macros.iter() { @@ -496,12 +492,11 @@ pub fn expand_stmt(s: &Stmt, fld: &mut MacroExpander) -> SmallVector<@Stmt> { fld.cx.span_err(pth.span, "expected macro name without module separators"); return SmallVector::zero(); } - let extname = &pth.segments[0].identifier; - let extnamestr = token::get_ident(extname.name); + let extname = pth.segments[0].identifier; + let extnamestr = token::get_ident(extname); let marked_after = match fld.extsbox.find(&extname.name) { None => { - fld.cx.span_err(pth.span, format!("macro undefined: '{}'", - extnamestr.get())); + fld.cx.span_err(pth.span, format!("macro undefined: '{}'", extnamestr)); return SmallVector::zero(); } @@ -535,7 +530,7 @@ pub fn expand_stmt(s: &Stmt, fld: &mut MacroExpander) -> SmallVector<@Stmt> { _ => { fld.cx.span_err(pth.span, format!("non-stmt macro in stmt pos: {}", - extnamestr.get())); + extnamestr)); return SmallVector::zero(); } }; @@ -545,7 +540,7 @@ pub fn expand_stmt(s: &Stmt, fld: &mut MacroExpander) -> SmallVector<@Stmt> { _ => { fld.cx.span_err(pth.span, format!("'{}' is not a tt-style macro", - extnamestr.get())); + extnamestr)); return SmallVector::zero(); } }; @@ -1186,9 +1181,7 @@ mod test { println!("uh oh, matches but shouldn't:"); println!("varref: {:?}",varref); // good lord, you can't make a path with 0 segments, can you? - let string = token::get_ident(varref.segments[0] - .identifier - .name); + let string = token::get_ident(varref.segments[0].identifier); println!("varref's first segment's uint: {}, and string: \"{}\"", varref.segments[0].identifier.name, string.get()); @@ -1213,10 +1206,7 @@ foo_module!() let bindings = name_finder.ident_accumulator; let cxbinds: ~[&ast::Ident] = - bindings.iter().filter(|b| { - let string = token::get_ident(b.name); - "xx" == string.get() - }).collect(); + bindings.iter().filter(|b| "xx" == token::get_ident(**b).get()).collect(); let cxbind = match cxbinds { [b] => b, _ => fail!("expected just one binding for ext_cx") @@ -1228,12 +1218,9 @@ foo_module!() let varrefs = path_finder.path_accumulator; // the xx binding should bind all of the xx varrefs: - for (idx,v) in varrefs.iter().filter(|p|{ + for (idx,v) in varrefs.iter().filter(|p| { p.segments.len() == 1 - && { - let string = token::get_ident(p.segments[0].identifier.name); - "xx" == string.get() - } + && "xx" == token::get_ident(p.segments[0].identifier).get() }).enumerate() { if mtwt_resolve(v.segments[0].identifier) != resolved_binding { println!("uh oh, xx binding didn't match xx varref:"); |
