libsyntax: Correctly de-@mut the pretty printer writer
This commit is contained in:
@@ -1319,7 +1319,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn fake_print_crate(crate: &ast::Crate) {
|
fn fake_print_crate(crate: &ast::Crate) {
|
||||||
let out = @mut std::io::stderr() as @mut std::io::Writer;
|
let mut out = ~std::io::stderr() as ~std::io::Writer;
|
||||||
let s = pprust::rust_printer(out, get_ident_interner());
|
let s = pprust::rust_printer(out, get_ident_interner());
|
||||||
pprust::print_crate_(s, crate);
|
pprust::print_crate_(s, crate);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ pub fn print_crate(cm: @CodeMap,
|
|||||||
span_diagnostic: @diagnostic::SpanHandler,
|
span_diagnostic: @diagnostic::SpanHandler,
|
||||||
crate: &ast::Crate,
|
crate: &ast::Crate,
|
||||||
filename: @str,
|
filename: @str,
|
||||||
input: @mut io::Reader,
|
input: &mut io::Reader,
|
||||||
out: ~io::Writer,
|
out: ~io::Writer,
|
||||||
ann: @pp_ann,
|
ann: @pp_ann,
|
||||||
is_expanded: bool) {
|
is_expanded: bool) {
|
||||||
@@ -211,13 +211,8 @@ pub fn fun_to_str(decl: &ast::fn_decl, purity: ast::purity, name: ast::Ident,
|
|||||||
end(&mut s); // Close the head box
|
end(&mut s); // Close the head box
|
||||||
end(&mut s); // Close the outer box
|
end(&mut s); // Close the outer box
|
||||||
eof(&mut s.s);
|
eof(&mut s.s);
|
||||||
|
|
||||||
// XXX(pcwalton): Need checked downcasts.
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let (_, wr): (uint, ~MemWriter) = cast::transmute(s.s.out);
|
get_mem_writer(&mut s.s.out)
|
||||||
let result = str::from_utf8_owned(wr.inner_ref().to_owned());
|
|
||||||
cast::forget(wr);
|
|
||||||
result
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,13 +225,8 @@ pub fn block_to_str(blk: &ast::Block, intr: @ident_interner) -> ~str {
|
|||||||
ibox(&mut s, 0u);
|
ibox(&mut s, 0u);
|
||||||
print_block(&mut s, blk);
|
print_block(&mut s, blk);
|
||||||
eof(&mut s.s);
|
eof(&mut s.s);
|
||||||
|
|
||||||
// XXX(pcwalton): Need checked downcasts.
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let (_, wr): (uint, ~MemWriter) = cast::transmute(s.s.out);
|
get_mem_writer(&mut s.s.out)
|
||||||
let result = str::from_utf8_owned(wr.inner_ref().to_owned());
|
|
||||||
cast::forget(wr);
|
|
||||||
result
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2318,17 +2308,23 @@ pub fn print_string(s: &mut ps, st: &str, style: ast::StrStyle) {
|
|||||||
word(&mut s.s, st);
|
word(&mut s.s, st);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XXX(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.
|
||||||
|
unsafe fn get_mem_writer(writer: &mut ~io::Writer) -> ~str {
|
||||||
|
let (_, wr): (uint, ~MemWriter) = cast::transmute_copy(writer);
|
||||||
|
let result = str::from_utf8_owned(wr.inner_ref().to_owned());
|
||||||
|
cast::forget(wr);
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_str<T>(t: &T, f: |&mut ps, &T|, intr: @ident_interner) -> ~str {
|
pub fn to_str<T>(t: &T, f: |&mut ps, &T|, intr: @ident_interner) -> ~str {
|
||||||
let wr = ~MemWriter::new();
|
let wr = ~MemWriter::new();
|
||||||
let mut s = rust_printer(wr as ~io::Writer, intr);
|
let mut s = rust_printer(wr as ~io::Writer, intr);
|
||||||
f(&mut s, t);
|
f(&mut s, t);
|
||||||
eof(&mut s.s);
|
eof(&mut s.s);
|
||||||
// XXX(pcwalton): Need checked downcasts.
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let (_, wr): (uint, ~MemWriter) = cast::transmute(s.s.out);
|
get_mem_writer(&mut s.s.out)
|
||||||
let result = str::from_utf8_owned(wr.inner_ref().to_owned());
|
|
||||||
cast::forget(wr);
|
|
||||||
result
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user