diff options
| author | bors <bors@rust-lang.org> | 2014-07-08 20:06:40 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-07-08 20:06:40 +0000 |
| commit | 8bb34a3146e6ba4bc7902a85de90cf4f8064ace0 (patch) | |
| tree | f5dd9ae1066eb755649fcced85e998d72147de19 /src/libsyntax | |
| parent | 35e21346216cc4c5a3b22bb6fb316f8c867f8c92 (diff) | |
| parent | 12c334a77b897f7b1cb6cff3c56a71ecb89c82af (diff) | |
| download | rust-8bb34a3146e6ba4bc7902a85de90cf4f8064ace0.tar.gz rust-8bb34a3146e6ba4bc7902a85de90cf4f8064ace0.zip | |
auto merge of #15493 : brson/rust/tostr, r=pcwalton
This updates https://github.com/rust-lang/rust/pull/15075. Rename `ToStr::to_str` to `ToString::to_string`. The naive renaming ends up with two `to_string` functions defined on strings in the prelude (the other defined via `collections::str::StrAllocating`). To remedy this I removed `StrAllocating::to_string`, making all conversions from `&str` to `String` go through `Show`. This has a measurable impact on the speed of this conversion, but the sense I get from others is that it's best to go ahead and unify `to_string` and address performance for all `to_string` conversions in `core::fmt`. `String::from_str(...)` still works as a manual fast-path. Note that the patch was done with a script, and ended up renaming a number of other `*_to_str` functions, particularly inside of rustc. All the ones I saw looked correct, and I didn't notice any additional API breakage. Closes #15046.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/ast_map.rs | 46 | ||||
| -rw-r--r-- | src/libsyntax/ast_util.rs | 14 | ||||
| -rw-r--r-- | src/libsyntax/codemap.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/diagnostic.rs | 10 | ||||
| -rw-r--r-- | src/libsyntax/ext/asm.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/base.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/env.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 12 | ||||
| -rw-r--r-- | src/libsyntax/ext/format.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/log_syntax.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/quote.rs | 24 | ||||
| -rw-r--r-- | src/libsyntax/ext/source_util.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_parser.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/parse/attr.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/parse/lexer/comments.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 76 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 24 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 180 |
21 files changed, 287 insertions, 147 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 76dbae48839..d98ae9f0e33 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -681,7 +681,7 @@ pub enum IntTy { impl fmt::Show for IntTy { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", ast_util::int_ty_to_str(*self, None)) + write!(f, "{}", ast_util::int_ty_to_string(*self, None)) } } @@ -696,7 +696,7 @@ pub enum UintTy { impl fmt::Show for UintTy { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", ast_util::uint_ty_to_str(*self, None)) + write!(f, "{}", ast_util::uint_ty_to_string(*self, None)) } } @@ -708,7 +708,7 @@ pub enum FloatTy { impl fmt::Show for FloatTy { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", ast_util::float_ty_to_str(*self)) + write!(f, "{}", ast_util::float_ty_to_string(*self)) } } diff --git a/src/libsyntax/ast_map.rs b/src/libsyntax/ast_map.rs index 1a9a910f38c..c95ea4a24aa 100644 --- a/src/libsyntax/ast_map.rs +++ b/src/libsyntax/ast_map.rs @@ -79,7 +79,7 @@ impl<'a, T: Copy> Iterator<T> for Values<'a, T> { /// The type of the iterator used by with_path. pub type PathElems<'a, 'b> = iter::Chain<Values<'a, PathElem>, LinkedPath<'b>>; -pub fn path_to_str<PI: Iterator<PathElem>>(mut path: PI) -> String { +pub fn path_to_string<PI: Iterator<PathElem>>(mut path: PI) -> String { let itr = token::get_ident_interner(); path.fold(String::new(), |mut s, e| { @@ -250,7 +250,7 @@ impl Map { match abi { Some(abi) => abi, None => fail!("expected foreign mod or inlined parent, found {}", - self.node_to_str(parent)) + self.node_to_string(parent)) } } @@ -265,7 +265,7 @@ impl Map { pub fn expect_item(&self, id: NodeId) -> Gc<Item> { match self.find(id) { Some(NodeItem(item)) => item, - _ => fail!("expected item, found {}", self.node_to_str(id)) + _ => fail!("expected item, found {}", self.node_to_string(id)) } } @@ -283,21 +283,21 @@ impl Map { _ => fail!("struct ID bound to enum variant that isn't struct-like"), } } - _ => fail!(format!("expected struct, found {}", self.node_to_str(id))), + _ => fail!(format!("expected struct, found {}", self.node_to_string(id))), } } pub fn expect_variant(&self, id: NodeId) -> P<Variant> { match self.find(id) { Some(NodeVariant(variant)) => variant, - _ => fail!(format!("expected variant, found {}", self.node_to_str(id))), + _ => fail!(format!("expected variant, found {}", self.node_to_string(id))), } } pub fn expect_foreign_item(&self, id: NodeId) -> Gc<ForeignItem> { match self.find(id) { Some(NodeForeignItem(item)) => item, - _ => fail!("expected foreign item, found {}", self.node_to_str(id)) + _ => fail!("expected foreign item, found {}", self.node_to_string(id)) } } @@ -326,13 +326,13 @@ impl Map { self.with_path_next(id, None, f) } - pub fn path_to_str(&self, id: NodeId) -> String { - self.with_path(id, |path| path_to_str(path)) + pub fn path_to_string(&self, id: NodeId) -> String { + self.with_path(id, |path| path_to_string(path)) } fn path_to_str_with_ident(&self, id: NodeId, i: Ident) -> String { self.with_path(id, |path| { - path_to_str(path.chain(Some(PathName(i.name)).move_iter())) + path_to_string(path.chain(Some(PathName(i.name)).move_iter())) }) } @@ -416,8 +416,8 @@ impl Map { .unwrap_or_else(|| fail!("AstMap.span: could not find span for id {}", id)) } - pub fn node_to_str(&self, id: NodeId) -> String { - node_id_to_str(self, id) + pub fn node_to_string(&self, id: NodeId) -> String { + node_id_to_string(self, id) } } @@ -664,7 +664,7 @@ pub fn map_decoded_item<F: FoldOps>(map: &Map, ii } -fn node_id_to_str(map: &Map, id: NodeId) -> String { +fn node_id_to_string(map: &Map, id: NodeId) -> String { match map.find(id) { Some(NodeItem(item)) => { let path_str = map.path_to_str_with_ident(id, item.ident); @@ -689,43 +689,43 @@ fn node_id_to_str(map: &Map, id: NodeId) -> String { Some(NodeMethod(m)) => { format!("method {} in {} (id={})", token::get_ident(m.ident), - map.path_to_str(id), id) + map.path_to_string(id), id) } Some(NodeTraitMethod(ref tm)) => { let m = ast_util::trait_method_to_ty_method(&**tm); format!("method {} in {} (id={})", token::get_ident(m.ident), - map.path_to_str(id), id) + map.path_to_string(id), id) } Some(NodeVariant(ref variant)) => { format!("variant {} in {} (id={})", token::get_ident(variant.node.name), - map.path_to_str(id), id) + map.path_to_string(id), id) } Some(NodeExpr(ref expr)) => { - format!("expr {} (id={})", pprust::expr_to_str(&**expr), id) + format!("expr {} (id={})", pprust::expr_to_string(&**expr), id) } Some(NodeStmt(ref stmt)) => { - format!("stmt {} (id={})", pprust::stmt_to_str(&**stmt), id) + format!("stmt {} (id={})", pprust::stmt_to_string(&**stmt), id) } Some(NodeArg(ref pat)) => { - format!("arg {} (id={})", pprust::pat_to_str(&**pat), id) + format!("arg {} (id={})", pprust::pat_to_string(&**pat), id) } Some(NodeLocal(ref pat)) => { - format!("local {} (id={})", pprust::pat_to_str(&**pat), id) + format!("local {} (id={})", pprust::pat_to_string(&**pat), id) } Some(NodePat(ref pat)) => { - format!("pat {} (id={})", pprust::pat_to_str(&**pat), id) + format!("pat {} (id={})", pprust::pat_to_string(&**pat), id) } Some(NodeBlock(ref block)) => { - format!("block {} (id={})", pprust::block_to_str(&**block), id) + format!("block {} (id={})", pprust::block_to_string(&**block), id) } Some(NodeStructCtor(_)) => { - format!("struct_ctor {} (id={})", map.path_to_str(id), id) + format!("struct_ctor {} (id={})", map.path_to_string(id), id) } Some(NodeLifetime(ref l)) => { format!("lifetime {} (id={})", - pprust::lifetime_to_str(&**l), id) + pprust::lifetime_to_string(&**l), id) } None => { format!("unknown node (id={})", id) diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index 036d6b4b43a..57c60b4a949 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -48,7 +48,7 @@ pub fn stmt_id(s: &Stmt) -> NodeId { } } -pub fn binop_to_str(op: BinOp) -> &'static str { +pub fn binop_to_string(op: BinOp) -> &'static str { match op { BiAdd => "+", BiSub => "-", @@ -87,7 +87,7 @@ pub fn is_shift_binop(b: BinOp) -> bool { } } -pub fn unop_to_str(op: UnOp) -> &'static str { +pub fn unop_to_string(op: UnOp) -> &'static str { match op { UnBox => "box(GC) ", UnUniq => "box() ", @@ -103,7 +103,7 @@ pub fn is_path(e: Gc<Expr>) -> bool { // Get a string representation of a signed int type, with its value. // We want to avoid "45int" and "-3int" in favor of "45" and "-3" -pub fn int_ty_to_str(t: IntTy, val: Option<i64>) -> String { +pub fn int_ty_to_string(t: IntTy, val: Option<i64>) -> String { let s = match t { TyI if val.is_some() => "i", TyI => "int", @@ -133,7 +133,7 @@ pub fn int_ty_max(t: IntTy) -> u64 { // Get a string representation of an unsigned int type, with its value. // We want to avoid "42uint" in favor of "42u" -pub fn uint_ty_to_str(t: UintTy, val: Option<u64>) -> String { +pub fn uint_ty_to_string(t: UintTy, val: Option<u64>) -> String { let s = match t { TyU if val.is_some() => "u", TyU => "uint", @@ -158,7 +158,7 @@ pub fn uint_ty_max(t: UintTy) -> u64 { } } -pub fn float_ty_to_str(t: FloatTy) -> String { +pub fn float_ty_to_string(t: FloatTy) -> String { match t { TyF32 => "f32".to_string(), TyF64 => "f64".to_string(), @@ -229,11 +229,11 @@ pub fn unguarded_pat(a: &Arm) -> Option<Vec<Gc<Pat>>> { /// listed as `__extensions__::method_name::hash`, with no indication /// of the type). pub fn impl_pretty_name(trait_ref: &Option<TraitRef>, ty: &Ty) -> Ident { - let mut pretty = pprust::ty_to_str(ty); + let mut pretty = pprust::ty_to_string(ty); match *trait_ref { Some(ref trait_ref) => { pretty.push_char('.'); - pretty.push_str(pprust::path_to_str(&trait_ref.path).as_slice()); + pretty.push_str(pprust::path_to_string(&trait_ref.path).as_slice()); } None => {} } diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index c917198e7d4..b3adf1daf41 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -367,7 +367,7 @@ impl CodeMap { } } - pub fn span_to_str(&self, sp: Span) -> String { + pub fn span_to_string(&self, sp: Span) -> String { if self.files.borrow().len() == 0 && sp == DUMMY_SP { return "no-location".to_string(); } @@ -687,7 +687,7 @@ mod test { // Test span_to_str for a span ending at the end of filemap let cm = init_code_map(); let span = Span {lo: BytePos(12), hi: BytePos(23), expn_info: None}; - let sstr = cm.span_to_str(span); + let sstr = cm.span_to_string(span); assert_eq!(sstr, "blork.rs:2:1: 2:12".to_string()); } diff --git a/src/libsyntax/diagnostic.rs b/src/libsyntax/diagnostic.rs index dfaa9fb5fcb..3805390776e 100644 --- a/src/libsyntax/diagnostic.rs +++ b/src/libsyntax/diagnostic.rs @@ -269,7 +269,7 @@ fn print_diagnostic(dst: &mut EmitterWriter, } try!(print_maybe_styled(dst, - format!("{}: ", lvl.to_str()).as_slice(), + format!("{}: ", lvl.to_string()).as_slice(), term::attr::ForegroundColor(lvl.color()))); try!(print_maybe_styled(dst, format!("{}\n", msg).as_slice(), @@ -349,14 +349,14 @@ impl Emitter for EmitterWriter { fn emit(dst: &mut EmitterWriter, cm: &codemap::CodeMap, rsp: RenderSpan, msg: &str, lvl: Level, custom: bool) -> io::IoResult<()> { let sp = rsp.span(); - let ss = cm.span_to_str(sp); + let ss = cm.span_to_string(sp); let lines = cm.span_to_lines(sp); if custom { // we want to tell compiletest/runtest to look at the last line of the // span (since `custom_highlight_lines` displays an arrow to the end of // the span) let span_end = Span { lo: sp.hi, hi: sp.hi, expn_info: sp.expn_info}; - let ses = cm.span_to_str(span_end); + let ses = cm.span_to_string(span_end); try!(print_diagnostic(dst, ses.as_slice(), lvl, msg)); if rsp.is_full_span() { try!(custom_highlight_lines(dst, cm, sp, lvl, lines)); @@ -493,7 +493,7 @@ fn print_macro_backtrace(w: &mut EmitterWriter, let ss = ei.callee .span .as_ref() - .map_or("".to_string(), |span| cm.span_to_str(*span)); + .map_or("".to_string(), |span| cm.span_to_string(*span)); let (pre, post) = match ei.callee.format { codemap::MacroAttribute => ("#[", "]"), codemap::MacroBang => ("", "!") @@ -502,7 +502,7 @@ fn print_macro_backtrace(w: &mut EmitterWriter, format!("in expansion of {}{}{}", pre, ei.callee.name, post).as_slice())); - let ss = cm.span_to_str(ei.call_site); + let ss = cm.span_to_string(ei.call_site); try!(print_diagnostic(w, ss.as_slice(), Note, "expansion site")); try!(print_macro_backtrace(w, cm, ei.call_site)); } diff --git a/src/libsyntax/ext/asm.rs b/src/libsyntax/ext/asm.rs index f0494e18120..13738e658e9 100644 --- a/src/libsyntax/ext/asm.rs +++ b/src/libsyntax/ext/asm.rs @@ -64,7 +64,7 @@ pub fn expand_asm(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) 'statement: loop { match state { Asm => { - let (s, style) = match expr_to_str(cx, p.parse_expr(), + let (s, style) = match expr_to_string(cx, p.parse_expr(), "inline assembly must be a string literal.") { Some((s, st)) => (s, st), // let compilation continue @@ -205,7 +205,7 @@ pub fn expand_asm(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) // Append an input operand, with the form of ("0", expr) // that links to an output operand. for &(i, out) in read_write_operands.iter() { - inputs.push((token::intern_and_get_ident(i.to_str().as_slice()), + inputs.push((token::intern_and_get_ident(i.to_string().as_slice()), out)); } diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 673ae31ef77..a540b23551b 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -533,7 +533,7 @@ impl<'a> ExtCtxt<'a> { /// Extract a string literal from the macro expanded version of `expr`, /// emitting `err_msg` if `expr` is not a string literal. This does not stop /// compilation on error, merely emits a non-fatal error and returns None. -pub fn expr_to_str(cx: &mut ExtCtxt, expr: Gc<ast::Expr>, err_msg: &str) +pub fn expr_to_string(cx: &mut ExtCtxt, expr: Gc<ast::Expr>, err_msg: &str) -> Option<(InternedString, ast::StrStyle)> { // we want to be able to handle e.g. concat("foo", "bar") let expr = cx.expand_expr(expr); diff --git a/src/libsyntax/ext/env.rs b/src/libsyntax/ext/env.rs index 9ef7241ca24..b24cfb85794 100644 --- a/src/libsyntax/ext/env.rs +++ b/src/libsyntax/ext/env.rs @@ -70,7 +70,7 @@ pub fn expand_env(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) Some(exprs) => exprs }; - let var = match expr_to_str(cx, + let var = match expr_to_string(cx, *exprs.get(0), "expected string literal") { None => return DummyResult::expr(sp), @@ -83,7 +83,7 @@ pub fn expand_env(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) var).as_slice()) } 2 => { - match expr_to_str(cx, *exprs.get(1), "expected string literal") { + match expr_to_string(cx, *exprs.get(1), "expected string literal") { None => return DummyResult::expr(sp), Some((s, _style)) => s } diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 752b3a09e65..74cede2a125 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1183,7 +1183,7 @@ mod test { // should fail: let cfg = ::syntax::ext::expand::ExpansionConfig { deriving_hash_type_parameter: false, - crate_name: "test".to_str(), + crate_name: "test".to_string(), }; expand_crate(&sess,cfg,vec!(),vec!(),crate_ast); } @@ -1200,7 +1200,7 @@ mod test { Vec::new(), &sess); let cfg = ::syntax::ext::expand::ExpansionConfig { deriving_hash_type_parameter: false, - crate_name: "test".to_str(), + crate_name: "test".to_string(), }; expand_crate(&sess,cfg,vec!(),vec!(),crate_ast); } @@ -1216,7 +1216,7 @@ mod test { Vec::new(), &sess); let cfg = ::syntax::ext::expand::ExpansionConfig { deriving_hash_type_parameter: false, - crate_name: "test".to_str(), + crate_name: "test".to_string(), }; expand_crate(&sess, cfg, vec!(), vec!(), crate_ast); } @@ -1253,7 +1253,7 @@ mod test { // the cfg argument actually does matter, here... let cfg = ::syntax::ext::expand::ExpansionConfig { deriving_hash_type_parameter: false, - crate_name: "test".to_str(), + crate_name: "test".to_string(), }; expand_crate(&ps,cfg,vec!(),vec!(),crate_ast) } @@ -1272,7 +1272,7 @@ mod test { //} //fn expand_and_resolve_and_pretty_print (crate_str: @str) -> String { //let resolved_ast = expand_and_resolve(crate_str); - //pprust::to_str(&resolved_ast,fake_print_crate,get_ident_interner()) + //pprust::to_string(&resolved_ast,fake_print_crate,get_ident_interner()) //} #[test] fn macro_tokens_should_match(){ @@ -1504,7 +1504,7 @@ mod test { } #[test] fn fmt_in_macro_used_inside_module_macro() { - let crate_str = "macro_rules! fmt_wrap(($b:expr)=>($b.to_str())) + let crate_str = "macro_rules! fmt_wrap(($b:expr)=>($b.to_string())) macro_rules! foo_module (() => (mod generated { fn a() { let xx = 147; fmt_wrap!(xx);}})) foo_module!() ".to_string(); diff --git a/src/libsyntax/ext/format.rs b/src/libsyntax/ext/format.rs index f39e50ad131..f486d2de339 100644 --- a/src/libsyntax/ext/format.rs +++ b/src/libsyntax/ext/format.rs @@ -126,7 +126,7 @@ fn parse_args(ecx: &mut ExtCtxt, sp: Span, allow_method: bool, _ => { ecx.span_err(p.span, format!("expected ident for named argument, but found `{}`", - p.this_token_to_str()).as_slice()); + p.this_token_to_string()).as_slice()); return (invocation, None); } }; @@ -690,7 +690,7 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, sp: Span, fmtsp: sp, }; cx.fmtsp = efmt.span; - let fmt = match expr_to_str(cx.ecx, + let fmt = match expr_to_string(cx.ecx, efmt, "format argument must be a string literal.") { Some((fmt, _)) => fmt, diff --git a/src/libsyntax/ext/log_syntax.rs b/src/libsyntax/ext/log_syntax.rs index 486d060da77..1f4d087abd0 100644 --- a/src/libsyntax/ext/log_syntax.rs +++ b/src/libsyntax/ext/log_syntax.rs @@ -21,7 +21,7 @@ pub fn expand_syntax_ext(cx: &mut base::ExtCtxt, -> Box<base::MacResult> { cx.print_backtrace(); - println!("{}", print::pprust::tt_to_str(&ast::TTDelim( + println!("{}", print::pprust::tt_to_string(&ast::TTDelim( Rc::new(tt.iter().map(|x| (*x).clone()).collect())))); // any so that `log_syntax` can be invoked as an expression and item. diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index 7b24b97d5da..a3c901904a9 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -128,13 +128,13 @@ pub mod rt { } } - impl_to_source!(ast::Ty, ty_to_str) - impl_to_source!(ast::Block, block_to_str) - impl_to_source!(ast::Arg, arg_to_str) - impl_to_source!(Generics, generics_to_str) - impl_to_source!(Gc<ast::Item>, item_to_str) - impl_to_source!(Gc<ast::Expr>, expr_to_str) - impl_to_source!(Gc<ast::Pat>, pat_to_str) + impl_to_source!(ast::Ty, ty_to_string) + impl_to_source!(ast::Block, block_to_string) + impl_to_source!(ast::Arg, arg_to_string) + impl_to_source!(Generics, generics_to_string) + impl_to_source!(Gc<ast::Item>, item_to_string) + impl_to_source!(Gc<ast::Expr>, expr_to_string) + impl_to_source!(Gc<ast::Pat>, pat_to_string) impl_to_source_slice!(ast::Ty, ", ") impl_to_source_slice!(Gc<ast::Item>, "\n\n") @@ -142,7 +142,7 @@ pub mod rt { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitStr( token::intern_and_get_ident(*self), ast::CookedStr)); - pprust::lit_to_str(&lit) + pprust::lit_to_string(&lit) } } @@ -155,14 +155,14 @@ pub mod rt { impl ToSource for bool { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitBool(*self)); - pprust::lit_to_str(&lit) + pprust::lit_to_string(&lit) } } impl ToSource for char { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitChar(*self)); - pprust::lit_to_str(&lit) + pprust::lit_to_string(&lit) } } @@ -171,7 +171,7 @@ pub mod rt { impl ToSource for $t { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitInt(*self as i64, ast::$tag)); - pprust::lit_to_str(&lit) + pprust::lit_to_string(&lit) } } ); @@ -179,7 +179,7 @@ pub mod rt { impl ToSource for $t { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitUint(*self as u64, ast::$tag)); - pprust::lit_to_str(&lit) + pprust::lit_to_string(&lit) } } ); diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs index 915fc16c156..8922f423aad 100644 --- a/src/libsyntax/ext/source_util.rs +++ b/src/libsyntax/ext/source_util.rs @@ -64,7 +64,7 @@ pub fn expand_file(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) pub fn expand_stringify(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) -> Box<base::MacResult> { - let s = pprust::tts_to_str(tts); + let s = pprust::tts_to_string(tts); base::MacExpr::new(cx.expr_str(sp, token::intern_and_get_ident(s.as_slice()))) } @@ -126,7 +126,7 @@ pub fn expand_include_str(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) Some(src) => { // Add this input file to the code map to make it available as // dependency information - let filename = file.display().to_str(); + let filename = file.display().to_string(); let interned = token::intern_and_get_ident(src); cx.codemap().new_filemap(filename, src.to_string()); diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index 86fbc8cec2a..913e0427bda 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -395,7 +395,7 @@ pub fn parse(sess: &ParseSess, nts, next_eis.len()).to_string()); } else if bb_eis.len() == 0u && next_eis.len() == 0u { return Failure(sp, format!("no rules expected the token `{}`", - token::to_str(&tok)).to_string()); + token::to_string(&tok)).to_string()); } else if next_eis.len() > 0u { /* Now process the next token */ while next_eis.len() > 0u { @@ -442,7 +442,7 @@ pub fn parse_nt(p: &mut Parser, name: &str) -> Nonterminal { "ident" => match p.token { token::IDENT(sn,b) => { p.bump(); token::NtIdent(box sn,b) } _ => { - let token_str = token::to_str(&p.token); + let token_str = token::to_string(&p.token); p.fatal((format!("expected ident, found {}", token_str.as_slice())).as_slice()) } diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 72c578b8769..2b481cb0596 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -48,7 +48,7 @@ impl<'a> ParserAnyMacro<'a> { parser.bump() } if parser.token != EOF { - let token_str = parser.this_token_to_str(); + let token_str = parser.this_token_to_string(); let msg = format!("macro expansion ignores token `{}` and any \ following", token_str); @@ -131,7 +131,7 @@ fn generic_extension(cx: &ExtCtxt, println!("{}! {} {} {}", token::get_ident(name), "{", - print::pprust::tt_to_str(&TTDelim(Rc::new(arg.iter() + print::pprust::tt_to_string(&TTDelim(Rc::new(arg.iter() .map(|x| (*x).clone()) .collect()))), "}"); @@ -254,7 +254,7 @@ pub fn add_new_extension(cx: &mut ExtCtxt, box MacroRulesDefiner { def: RefCell::new(Some(MacroDef { - name: token::get_ident(name).to_str(), + name: token::get_ident(name).to_string(), ext: NormalTT(exp, Some(sp)) })) } as Box<MacResult> diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 80dd4a83e48..ee4810b4b54 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -1026,7 +1026,7 @@ mod test { assert_pred!( matches_codepattern, "matches_codepattern", - pprust::to_str(|s| fake_print_crate(s, &folded_crate)), + pprust::to_string(|s| fake_print_crate(s, &folded_crate)), "#[a]mod zz{fn zz(zz:zz,zz:zz){zz!(zz,zz,zz);zz;zz}}".to_string()); } @@ -1040,7 +1040,7 @@ mod test { assert_pred!( matches_codepattern, "matches_codepattern", - pprust::to_str(|s| fake_print_crate(s, &folded_crate)), + pprust::to_string(|s| fake_print_crate(s, &folded_crate)), "zz!zz((zz$zz:zz$(zz $zz:zz)zz+=>(zz$(zz$zz$zz)+)))".to_string()); } } diff --git a/src/libsyntax/parse/attr.rs b/src/libsyntax/parse/attr.rs index e47080dadfd..53489e32837 100644 --- a/src/libsyntax/parse/attr.rs +++ b/src/libsyntax/parse/attr.rs @@ -91,7 +91,7 @@ impl<'a> ParserAttr for Parser<'a> { (mk_sp(lo, hi), meta_item, style) } _ => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `#` but found `{}`", token_str).as_slice()); } diff --git a/src/libsyntax/parse/lexer/comments.rs b/src/libsyntax/parse/lexer/comments.rs index f00c1ab4455..73e5bb97f51 100644 --- a/src/libsyntax/parse/lexer/comments.rs +++ b/src/libsyntax/parse/lexer/comments.rs @@ -369,7 +369,7 @@ pub fn gather_comments_and_literals(span_diagnostic: &diagnostic::SpanHandler, literals.push(Literal {lit: s.to_string(), pos: sp.lo}); }) } else { - debug!("tok: {}", token::to_str(&tok)); + debug!("tok: {}", token::to_string(&tok)); } first_read = false; } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 3119d341281..a3917e93197 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -362,24 +362,24 @@ impl<'a> Parser<'a> { } } // convert a token to a string using self's reader - pub fn token_to_str(token: &token::Token) -> String { - token::to_str(token) + pub fn token_to_string(token: &token::Token) -> String { + token::to_string(token) } // convert the current token to a string using self's reader - pub fn this_token_to_str(&mut self) -> String { - Parser::token_to_str(&self.token) + pub fn this_token_to_string(&mut self) -> String { + Parser::token_to_string(&self.token) } pub fn unexpected_last(&mut self, t: &token::Token) -> ! { - let token_str = Parser::token_to_str(t); + let token_str = Parser::token_to_string(t); let last_span = self.last_span; self.span_fatal(last_span, format!("unexpected token: `{}`", token_str).as_slice()); } pub fn unexpected(&mut self) -> ! { - let this_token = self.this_token_to_str(); + let this_token = self.this_token_to_string(); self.fatal(format!("unexpected token: `{}`", this_token).as_slice()); } @@ -389,8 +389,8 @@ impl<'a> Parser<'a> { if self.token == *t { self.bump(); } else { - let token_str = Parser::token_to_str(t); - let this_token_str = self.this_token_to_str(); + let token_str = Parser::token_to_string(t); + let this_token_str = self.this_token_to_string(); self.fatal(format!("expected `{}` but found `{}`", token_str, this_token_str).as_slice()) @@ -403,15 +403,15 @@ impl<'a> Parser<'a> { pub fn expect_one_of(&mut self, edible: &[token::Token], inedible: &[token::Token]) { - fn tokens_to_str(tokens: &[token::Token]) -> String { + fn tokens_to_string(tokens: &[token::Token]) -> String { let mut i = tokens.iter(); // This might be a sign we need a connect method on Iterator. let b = i.next() - .map_or("".to_string(), |t| Parser::token_to_str(t)); + .map_or("".to_string(), |t| Parser::token_to_string(t)); i.fold(b, |b,a| { let mut b = b; b.push_str("`, `"); - b.push_str(Parser::token_to_str(a).as_slice()); + b.push_str(Parser::token_to_string(a).as_slice()); b }) } @@ -421,8 +421,8 @@ impl<'a> Parser<'a> { // leave it in the input } else { let expected = edible.iter().map(|x| (*x).clone()).collect::<Vec<_>>().append(inedible); - let expect = tokens_to_str(expected.as_slice()); - let actual = self.this_token_to_str(); + let expect = tokens_to_string(expected.as_slice()); + let actual = self.this_token_to_string(); self.fatal( (if expected.len() != 1 { (format!("expected one of `{}` but found `{}`", @@ -511,7 +511,7 @@ impl<'a> Parser<'a> { self.bug("ident interpolation not converted to real token"); } _ => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal((format!("expected ident, found `{}`", token_str)).as_slice()) } @@ -555,7 +555,7 @@ impl<'a> Parser<'a> { pub fn expect_keyword(&mut self, kw: keywords::Keyword) { if !self.eat_keyword(kw) { let id_interned_str = token::get_ident(kw.to_ident()); - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `{}`, found `{}`", id_interned_str, token_str).as_slice()) } @@ -564,7 +564,7 @@ impl<'a> Parser<'a> { // signal an error if the given string is a strict keyword pub fn check_strict_keywords(&mut self) { if token::is_strict_keyword(&self.token) { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); let span = self.span; self.span_err(span, format!("found `{}` in ident position", @@ -575,7 +575,7 @@ impl<'a> Parser<'a> { // signal an error if the current token is a reserved keyword pub fn check_reserved_keywords(&mut self) { if token::is_reserved_keyword(&self.token) { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("`{}` is a reserved keyword", token_str).as_slice()) } @@ -592,9 +592,9 @@ impl<'a> Parser<'a> { self.replace_token(token::BINOP(token::AND), lo, span.hi) } _ => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); let found_token = - Parser::token_to_str(&token::BINOP(token::AND)); + Parser::token_to_string(&token::BINOP(token::AND)); self.fatal(format!("expected `{}`, found `{}`", found_token, token_str).as_slice()) @@ -613,9 +613,9 @@ impl<'a> Parser<'a> { self.replace_token(token::BINOP(token::OR), lo, span.hi) } _ => { - let found_token = self.this_token_to_str(); + let found_token = self.this_token_to_string(); let token_str = - Parser::token_to_str(&token::BINOP(token::OR)); + Parser::token_to_string(&token::BINOP(token::OR)); self.fatal(format!("expected `{}`, found `{}`", token_str, found_token).as_slice()) @@ -666,8 +666,8 @@ impl<'a> Parser<'a> { fn expect_lt(&mut self) { if !self.eat_lt(true) { - let found_token = self.this_token_to_str(); - let token_str = Parser::token_to_str(&token::LT); + let found_token = self.this_token_to_string(); + let token_str = Parser::token_to_string(&token::LT); self.fatal(format!("expected `{}`, found `{}`", token_str, found_token).as_slice()) @@ -717,8 +717,8 @@ impl<'a> Parser<'a> { self.replace_token(token::EQ, lo, span.hi) } _ => { - let gt_str = Parser::token_to_str(&token::GT); - let this_token_str = self.this_token_to_str(); + let gt_str = Parser::token_to_string(&token::GT); + let this_token_str = self.this_token_to_string(); self.fatal(format!("expected `{}`, found `{}`", gt_str, this_token_str).as_slice()) @@ -1246,7 +1246,7 @@ impl<'a> Parser<'a> { } _ => { - let token_str = p.this_token_to_str(); + let token_str = p.this_token_to_string(); p.fatal((format!("expected `;` or `{{` but found `{}`", token_str)).as_slice()) } @@ -2230,7 +2230,7 @@ impl<'a> Parser<'a> { None => {} Some(&sp) => p.span_note(sp, "unclosed delimiter"), }; - let token_str = p.this_token_to_str(); + let token_str = p.this_token_to_string(); p.fatal(format!("incorrect close delimiter: `{}`", token_str).as_slice()) }, @@ -2821,7 +2821,7 @@ impl<'a> Parser<'a> { if self.token == token::DOTDOT { self.bump(); if self.token != token::RBRACE { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `{}`, found `{}`", "}", token_str).as_slice()) } @@ -2842,7 +2842,7 @@ impl<'a> Parser<'a> { let subpat = if self.token == token::COLON { match bind_type { BindByRef(..) | BindByValue(MutMutable) => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("unexpected `{}`", token_str).as_slice()) } @@ -3252,7 +3252,7 @@ impl<'a> Parser<'a> { } else { "" }; - let tok_str = self.this_token_to_str(); + let tok_str = self.this_token_to_string(); self.fatal(format!("expected {}`(` or `{{`, but found `{}`", ident_str, tok_str).as_slice()) @@ -3742,7 +3742,7 @@ impl<'a> Parser<'a> { fn expect_self_ident(&mut self) { if !self.is_self_ident() { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `self` but found `{}`", token_str).as_slice()) } @@ -3875,7 +3875,7 @@ impl<'a> Parser<'a> { vec!(Arg::new_self(explicit_self_sp, mutbl_self)) } _ => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `,` or `)`, found `{}`", token_str).as_slice()) } @@ -4044,7 +4044,7 @@ impl<'a> Parser<'a> { // Parses two variants (with the region/type params always optional): // impl<T> Foo { ... } - // impl<T> ToStr for ~[T] { ... } + // impl<T> ToString for ~[T] { ... } fn parse_item_impl(&mut self) -> ItemInfo { // First, parse type parameters if necessary. let generics = self.parse_generics(); @@ -4179,7 +4179,7 @@ impl<'a> Parser<'a> { is_tuple_like = true; fields = Vec::new(); } else { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected `{}`, `(`, or `;` after struct \ name but found `{}`", "{", token_str).as_slice()) @@ -4210,7 +4210,7 @@ impl<'a> Parser<'a> { token::RBRACE => {} _ => { let span = self.span; - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.span_fatal(span, format!("expected `,`, or `}}` but found `{}`", token_str).as_slice()) @@ -4291,7 +4291,7 @@ impl<'a> Parser<'a> { the module"); } _ => { - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.fatal(format!("expected item but found `{}`", token_str).as_slice()) } @@ -4571,7 +4571,7 @@ impl<'a> Parser<'a> { } _ => { let span = self.span; - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.span_fatal(span, format!("expected extern crate name but \ found `{}`", @@ -4829,7 +4829,7 @@ impl<'a> Parser<'a> { } let span = self.span; - let token_str = self.this_token_to_str(); + let token_str = self.this_token_to_string(); self.span_fatal(span, format!("expected `{}` or `fn` but found `{}`", "{", token_str).as_slice()); diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 367b18916ac..84834f54a04 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -141,7 +141,7 @@ impl fmt::Show for Nonterminal { } } -pub fn binop_to_str(o: BinOp) -> &'static str { +pub fn binop_to_string(o: BinOp) -> &'static str { match o { PLUS => "+", MINUS => "-", @@ -156,7 +156,7 @@ pub fn binop_to_str(o: BinOp) -> &'static str { } } -pub fn to_str(t: &Token) -> String { +pub fn to_string(t: &Token) -> String { match *t { EQ => "=".to_string(), LT => "<".to_string(), @@ -169,9 +169,9 @@ pub fn to_str(t: &Token) -> String { TILDE => "~".to_string(), OROR => "||".to_string(), ANDAND => "&&".to_string(), - BINOP(op) => binop_to_str(op).to_string(), + BINOP(op) => binop_to_string(op).to_string(), BINOPEQ(op) => { - let mut s = binop_to_str(op).to_string(); + let mut s = binop_to_string(op).to_string(); s.push_str("="); s } @@ -215,15 +215,15 @@ pub fn to_str(t: &Token) -> String { res.push_char('\''); res } - LIT_INT(i, t) => ast_util::int_ty_to_str(t, Some(i)), - LIT_UINT(u, t) => ast_util::uint_ty_to_str(t, Some(u)), - LIT_INT_UNSUFFIXED(i) => { (i as u64).to_str() } + LIT_INT(i, t) => ast_util::int_ty_to_string(t, Some(i)), + LIT_UINT(u, t) => ast_util::uint_ty_to_string(t, Some(u)), + LIT_INT_UNSUFFIXED(i) => { (i as u64).to_string() } LIT_FLOAT(s, t) => { let mut body = String::from_str(get_ident(s).get()); if body.as_slice().ends_with(".") { body.push_char('0'); // `10.f` is not a float literal } - body.push_str(ast_util::float_ty_to_str(t).as_slice()); + body.push_str(ast_util::float_ty_to_string(t).as_slice()); body } LIT_FLOAT_UNSUFFIXED(s) => { @@ -262,8 +262,8 @@ pub fn to_str(t: &Token) -> String { EOF => "<eof>".to_string(), INTERPOLATED(ref nt) => { match nt { - &NtExpr(ref e) => ::print::pprust::expr_to_str(&**e), - &NtMeta(ref e) => ::print::pprust::meta_item_to_str(&**e), + &NtExpr(ref e) => ::print::pprust::expr_to_string(&**e), + &NtMeta(ref e) => ::print::pprust::meta_item_to_string(&**e), _ => { let mut s = "an interpolated ".to_string(); match *nt { @@ -693,7 +693,7 @@ pub fn gensym_ident(s: &str) -> ast::Ident { } // create a fresh name that maps to the same string as the old one. -// note that this guarantees that str_ptr_eq(ident_to_str(src),interner_get(fresh_name(src))); +// note that this guarantees that str_ptr_eq(ident_to_string(src),interner_get(fresh_name(src))); // that is, that the new name and the old one are connected to ptr_eq strings. pub fn fresh_name(src: &ast::Ident) -> Name { let interner = get_ident_interner(); @@ -702,7 +702,7 @@ pub fn fresh_name(src: &ast::Ident) -> Name { // good error messages and uses of struct names in ambiguous could-be-binding // locations. Also definitely destroys the guarantee given above about ptr_eq. /*let num = rand::task_rng().gen_uint_range(0,0xffff); - gensym(format!("{}_{}",ident_to_str(src),num))*/ + gensym(format!("{}_{}",ident_to_string(src),num))*/ } // create a fresh mark. diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index cdaa9bbd8dd..e695241472b 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -128,6 +128,126 @@ pub fn print_crate<'a>(cm: &'a CodeMap, eof(&mut s.s) } +pub fn to_string(f: |&mut State| -> IoResult<()>) -> String { + let mut s = rust_printer(box MemWriter::new()); + f(&mut s).unwrap(); + eof(&mut s.s).unwrap(); + unsafe { + // FIXME(pcwalton): A nasty function to extract the string from an `io::Writer` + // that we "know" to be a `MemWriter` that works around the lack of checked + // downcasts. + let (_, wr): (uint, Box<MemWriter>) = mem::transmute_copy(&s.s.out); + let result = + str::from_utf8_owned(Vec::from_slice(wr.get_ref())).unwrap(); + mem::forget(wr); + result.to_string() + } +} + +pub fn ty_to_string(ty: &ast::Ty) -> String { + to_string(|s| s.print_type(ty)) +} + +pub fn pat_to_string(pat: &ast::Pat) -> String { + to_string(|s| s.print_pat(pat)) +} + +pub fn expr_to_string(e: &ast::Expr) -> String { + to_string(|s| s.print_expr(e)) +} + +pub fn lifetime_to_string(e: &ast::Lifetime) -> String { + to_string(|s| s.print_lifetime(e)) +} + +pub fn tt_to_string(tt: &ast::TokenTree) -> String { + to_string(|s| s.print_tt(tt)) +} + +pub fn tts_to_string(tts: &[ast::TokenTree]) -> String { + to_string(|s| s.print_tts(tts)) +} + +pub fn stmt_to_string(stmt: &ast::Stmt) -> String { + to_string(|s| s.print_stmt(stmt)) +} + +pub fn item_to_string(i: &ast::Item) -> String { + to_string(|s| s.print_item(i)) +} + +pub fn generics_to_string(generics: &ast::Generics) -> String { + to_string(|s| s.print_generics(generics)) +} + +pub fn ty_method_to_string(p: &ast::TypeMethod) -> String { + to_string(|s| s.print_ty_method(p)) +} + +pub fn method_to_string(p: &ast::Method) -> String { + to_string(|s| s.print_method(p)) +} + +pub fn fn_block_to_string(p: &ast::FnDecl) -> String { + to_string(|s| s.print_fn_block_args(p)) +} + +pub fn path_to_string(p: &ast::Path) -> String { + to_string(|s| s.print_path(p, false)) +} + +pub fn ident_to_string(id: &ast::Ident) -> String { + to_string(|s| s.print_ident(*id)) +} + +pub fn fun_to_string(decl: &ast::FnDecl, fn_style: ast::FnStyle, name: ast::Ident, + opt_explicit_self: Option<ast::ExplicitSelf_>, + generics: &ast::Generics) -> String { + to_string(|s| { + try!(s.print_fn(decl, Some(fn_style), abi::Rust, + name, generics, opt_explicit_self, ast::Inherited)); + try!(s.end()); // Close the head box + s.end() // Close the outer box + }) +} + +pub fn block_to_string(blk: &ast::Block) -> String { + to_string(|s| { + // containing cbox, will be closed by print-block at } + try!(s.cbox(indent_unit)); + // head-ibox, will be closed by print-block after { + try!(s.ibox(0u)); + s.print_block(blk) + }) +} + +pub fn meta_item_to_string(mi: &ast::MetaItem) -> String { + to_string(|s| s.print_meta_item(mi)) +} + +pub fn attribute_to_string(attr: &ast::Attribute) -> String { + to_string(|s| s.print_attribute(attr)) +} + +pub fn lit_to_string(l: &ast::Lit) -> String { + to_string(|s| s.print_literal(l)) +} + +pub fn explicit_self_to_string(explicit_self: ast::ExplicitSelf_) -> String { + to_string(|s| s.print_explicit_self(explicit_self, ast::MutImmutable).map(|_| {})) +} + +pub fn variant_to_string(var: &ast::Variant) -> String { + to_string(|s| s.print_variant(var)) +} + +pub fn arg_to_string(arg: &ast::Arg) -> String { + to_string(|s| s.print_arg(arg)) +} + + + +#[cfg(stage0)] pub fn to_str(f: |&mut State| -> IoResult<()>) -> String { let mut s = rust_printer(box MemWriter::new()); f(&mut s).unwrap(); @@ -144,62 +264,72 @@ pub fn to_str(f: |&mut State| -> IoResult<()>) -> String { } } +#[cfg(stage0)] pub fn ty_to_str(ty: &ast::Ty) -> String { to_str(|s| s.print_type(ty)) } +#[cfg(stage0)] pub fn pat_to_str(pat: &ast::Pat) -> String { to_str(|s| s.print_pat(pat)) } +#[cfg(stage0)] pub fn expr_to_str(e: &ast::Expr) -> String { to_str(|s| s.print_expr(e)) } +#[cfg(stage0)] pub fn lifetime_to_str(e: &ast::Lifetime) -> String { to_str(|s| s.print_lifetime(e)) } +#[cfg(stage0)] pub fn tt_to_str(tt: &ast::TokenTree) -> String { to_str(|s| s.print_tt(tt)) } +#[cfg(stage0)] pub fn tts_to_str(tts: &[ast::TokenTree]) -> String { to_str(|s| s.print_tts(tts)) } +#[cfg(stage0)] pub fn stmt_to_str(stmt: &ast::Stmt) -> String { to_str(|s| s.print_stmt(stmt)) } +#[cfg(stage0)] pub fn item_to_str(i: &ast::Item) -> String { to_str(|s| s.print_item(i)) } +#[cfg(stage0)] pub fn generics_to_str(generics: &ast::Generics) -> String { to_str(|s| s.print_generics(generics)) } +#[cfg(stage0)] pub fn ty_method_to_str(p: &ast::TypeMethod) -> String { to_str(|s| s.print_ty_method(p)) } +#[cfg(stage0)] pub fn method_to_str(p: &ast::Method) -> String { to_str(|s| s.print_method(p)) } +#[cfg(stage0)] pub fn fn_block_to_str(p: &ast::FnDecl) -> String { to_str(|s| s.print_fn_block_args(p)) } +#[cfg(stage0)] pub fn path_to_str(p: &ast::Path) -> String { to_str(|s| s.print_path(p, false)) } -pub fn ident_to_str(id: &ast::Ident) -> String { - to_str(|s| s.print_ident(*id)) -} - +#[cfg(stage0)] pub fn fun_to_str(decl: &ast::FnDecl, fn_style: ast::FnStyle, name: ast::Ident, opt_explicit_self: Option<ast::ExplicitSelf_>, generics: &ast::Generics) -> String { @@ -211,6 +341,7 @@ pub fn fun_to_str(decl: &ast::FnDecl, fn_style: ast::FnStyle, name: ast::Ident, }) } +#[cfg(stage0)] pub fn block_to_str(blk: &ast::Block) -> String { to_str(|s| { // containing cbox, will be closed by print-block at } @@ -221,30 +352,39 @@ pub fn block_to_str(blk: &ast::Block) -> String { }) } +#[cfg(stage0)] pub fn meta_item_to_str(mi: &ast::MetaItem) -> String { to_str(|s| s.print_meta_item(mi)) } +#[cfg(stage0)] pub fn attribute_to_str(attr: &ast::Attribute) -> String { to_str(|s| s.print_attribute(attr)) } +#[cfg(stage0)] pub fn lit_to_str(l: &ast::Lit) -> String { to_str(|s| s.print_literal(l)) } +#[cfg(stage0)] pub fn explicit_self_to_str(explicit_self: ast::ExplicitSelf_) -> String { to_str(|s| s.print_explicit_self(explicit_self, ast::MutImmutable).map(|_| {})) } +#[cfg(stage0)] pub fn variant_to_str(var: &ast::Variant) -> String { to_str(|s| s.print_variant(var)) } +#[cfg(stage0)] pub fn arg_to_str(arg: &ast::Arg) -> String { to_str(|s| s.print_arg(arg)) } + + + pub fn visibility_qualified(vis: ast::Visibility, s: &str) -> String { match vis { ast::Public => format!("pub {}", s), @@ -674,7 +814,7 @@ impl<'a> State<'a> { } ast::ItemForeignMod(ref nmod) => { try!(self.head("extern")); - try!(self.word_nbsp(nmod.abi.to_str().as_slice())); + try!(self.word_nbsp(nmod.abi.to_string().as_slice())); try!(self.bopen()); try!(self.print_foreign_mod(nmod, item.attrs.as_slice())); try!(self.bclose(item.span)); @@ -898,7 +1038,7 @@ impl<'a> State<'a> { match *tt { ast::TTDelim(ref tts) => self.print_tts(tts.as_slice()), ast::TTTok(_, ref tk) => { - try!(word(&mut self.s, parse::token::to_str(tk).as_slice())); + try!(word(&mut self.s, parse::token::to_string(tk).as_slice())); match *tk { parse::token::DOC_COMMENT(..) => { hardbreak(&mut self.s) @@ -915,7 +1055,7 @@ impl<'a> State<'a> { match *sep { Some(ref tk) => { try!(word(&mut self.s, - parse::token::to_str(tk).as_slice())); + parse::token::to_string(tk).as_slice())); } None => () } @@ -1313,11 +1453,11 @@ impl<'a> State<'a> { ast::ExprBinary(op, ref lhs, ref rhs) => { try!(self.print_expr(&**lhs)); try!(space(&mut self.s)); - try!(self.word_space(ast_util::binop_to_str(op))); + try!(self.word_space(ast_util::binop_to_string(op))); try!(self.print_expr(&**rhs)); } ast::ExprUnary(op, ref expr) => { - try!(word(&mut self.s, ast_util::unop_to_str(op))); + try!(word(&mut self.s, ast_util::unop_to_string(op))); try!(self.print_expr_maybe_paren(&**expr)); } ast::ExprAddrOf(m, ref expr) => { @@ -1493,7 +1633,7 @@ impl<'a> State<'a> { ast::ExprAssignOp(op, ref lhs, ref rhs) => { try!(self.print_expr(&**lhs)); try!(space(&mut self.s)); - try!(word(&mut self.s, ast_util::binop_to_str(op))); + try!(word(&mut self.s, ast_util::binop_to_string(op))); try!(self.word_space("=")); try!(self.print_expr(&**rhs)); } @@ -2337,11 +2477,11 @@ impl<'a> State<'a> { } ast::LitInt(i, t) => { word(&mut self.s, - ast_util::int_ty_to_str(t, Some(i)).as_slice()) + ast_util::int_ty_to_string(t, Some(i)).as_slice()) } ast::LitUint(u, t) => { word(&mut self.s, - ast_util::uint_ty_to_str(t, Some(u)).as_slice()) + ast_util::uint_ty_to_string(t, Some(u)).as_slice()) } ast::LitIntUnsuffixed(i) => { word(&mut self.s, format!("{}", i).as_slice()) @@ -2351,7 +2491,7 @@ impl<'a> State<'a> { format!( "{}{}", f.get(), - ast_util::float_ty_to_str(t).as_slice()).as_slice()) + ast_util::float_ty_to_string(t).as_slice()).as_slice()) } ast::LitFloatUnsuffixed(ref f) => word(&mut self.s, f.get()), ast::LitNil => word(&mut self.s, "()"), @@ -2489,7 +2629,7 @@ impl<'a> State<'a> { Some(abi::Rust) => Ok(()), Some(abi) => { try!(self.word_nbsp("extern")); - self.word_nbsp(abi.to_str().as_slice()) + self.word_nbsp(abi.to_string().as_slice()) } None => Ok(()) } @@ -2500,7 +2640,7 @@ impl<'a> State<'a> { match opt_abi { Some(abi) => { try!(self.word_nbsp("extern")); - self.word_nbsp(abi.to_str().as_slice()) + self.word_nbsp(abi.to_string().as_slice()) } None => Ok(()) } @@ -2516,7 +2656,7 @@ impl<'a> State<'a> { if abi != abi::Rust { try!(self.word_nbsp("extern")); - try!(self.word_nbsp(abi.to_str().as_slice())); + try!(self.word_nbsp(abi.to_string().as_slice())); } word(&mut self.s, "fn") @@ -2547,7 +2687,7 @@ mod test { use parse::token; #[test] - fn test_fun_to_str() { + fn test_fun_to_string() { let abba_ident = token::str_to_ident("abba"); let decl = ast::FnDecl { @@ -2559,13 +2699,13 @@ mod test { variadic: false }; let generics = ast_util::empty_generics(); - assert_eq!(&fun_to_str(&decl, ast::NormalFn, abba_ident, + assert_eq!(&fun_to_string(&decl, ast::NormalFn, abba_ident, None, &generics), &"fn abba()".to_string()); } #[test] - fn test_variant_to_str() { + fn test_variant_to_string() { let ident = token::str_to_ident("principal_skinner"); let var = codemap::respan(codemap::DUMMY_SP, ast::Variant_ { @@ -2578,7 +2718,7 @@ mod test { vis: ast::Public, }); - let varstr = variant_to_str(&var); + let varstr = variant_to_string(&var); assert_eq!(&varstr,&"pub principal_skinner".to_string()); } } |
