about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-08-26 16:39:51 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-08-27 16:31:48 -0400
commitac4f0df12067e9aeb8ad8b7b953c69192daf0ddd (patch)
tree9c01d0e7ae596572a2736b309f44030083b4f5e5 /src/libstd
parentc2bc59e0869889d9b996da99915f95ae89ddff00 (diff)
downloadrust-ac4f0df12067e9aeb8ad8b7b953c69192daf0ddd.tar.gz
rust-ac4f0df12067e9aeb8ad8b7b953c69192daf0ddd.zip
repr: include mutability qualifier in visit_ptr
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/repr.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libstd/repr.rs b/src/libstd/repr.rs
index fa9d7b3b979..0bedabf835f 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]");