diff --git a/src/libstd/repr.rs b/src/libstd/repr.rs index fa9d7b3b9790..0bedabf835f6 100644 --- a/src/libstd/repr.rs +++ b/src/libstd/repr.rs @@ -282,12 +282,14 @@ impl TyVisitor for ReprVisitor { self.write_escaped_slice(*s); } } + fn visit_estr_uniq(&self) -> bool { do self.get::<~str> |s| { self.writer.write_char('~'); self.write_escaped_slice(*s); } } + fn visit_estr_slice(&self) -> bool { do self.get::<&str> |s| { self.write_escaped_slice(*s); @@ -322,6 +324,7 @@ impl TyVisitor for ReprVisitor { } } + #[cfg(stage0)] fn visit_ptr(&self, _mtbl: uint, _inner: *TyDesc) -> bool { do self.get::<*c_void> |p| { self.writer.write_str(fmt!("(0x%x as *())", @@ -329,6 +332,15 @@ impl TyVisitor for ReprVisitor { } } + #[cfg(not(stage0))] + fn visit_ptr(&self, mtbl: uint, _inner: *TyDesc) -> bool { + do self.get::<*c_void> |p| { + self.writer.write_str(fmt!("(0x%x as *", *p as uint)); + self.write_mut_qualifier(mtbl); + self.writer.write_str("())"); + } + } + fn visit_rptr(&self, mtbl: uint, inner: *TyDesc) -> bool { self.writer.write_char('&'); self.write_mut_qualifier(mtbl); @@ -613,6 +625,9 @@ fn test_repr() { exact_test(&(&mut x), "&mut 10"); exact_test(&(@mut [1, 2]), "@mut [1, 2]"); + exact_test(&(0 as *()), "(0x0 as *())"); + exact_test(&(0 as *mut ()), "(0x0 as *mut ())"); + exact_test(&(1,), "(1,)"); exact_test(&(@[1,2,3,4,5,6,7,8]), "@[1, 2, 3, 4, 5, 6, 7, 8]");