Skip to content

Commit ac4f0df

Browse files
committed
repr: include mutability qualifier in visit_ptr
1 parent c2bc59e commit ac4f0df

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/libstd/repr.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,14 @@ impl TyVisitor for ReprVisitor {
282282
self.write_escaped_slice(*s);
283283
}
284284
}
285+
285286
fn visit_estr_uniq(&self) -> bool {
286287
do self.get::<~str> |s| {
287288
self.writer.write_char('~');
288289
self.write_escaped_slice(*s);
289290
}
290291
}
292+
291293
fn visit_estr_slice(&self) -> bool {
292294
do self.get::<&str> |s| {
293295
self.write_escaped_slice(*s);
@@ -322,13 +324,23 @@ impl TyVisitor for ReprVisitor {
322324
}
323325
}
324326

327+
#[cfg(stage0)]
325328
fn visit_ptr(&self, _mtbl: uint, _inner: *TyDesc) -> bool {
326329
do self.get::<*c_void> |p| {
327330
self.writer.write_str(fmt!("(0x%x as *())",
328331
*p as uint));
329332
}
330333
}
331334

335+
#[cfg(not(stage0))]
336+
fn visit_ptr(&self, mtbl: uint, _inner: *TyDesc) -> bool {
337+
do self.get::<*c_void> |p| {
338+
self.writer.write_str(fmt!("(0x%x as *", *p as uint));
339+
self.write_mut_qualifier(mtbl);
340+
self.writer.write_str("())");
341+
}
342+
}
343+
332344
fn visit_rptr(&self, mtbl: uint, inner: *TyDesc) -> bool {
333345
self.writer.write_char('&');
334346
self.write_mut_qualifier(mtbl);
@@ -613,6 +625,9 @@ fn test_repr() {
613625
exact_test(&(&mut x), "&mut 10");
614626
exact_test(&(@mut [1, 2]), "@mut [1, 2]");
615627

628+
exact_test(&(0 as *()), "(0x0 as *())");
629+
exact_test(&(0 as *mut ()), "(0x0 as *mut ())");
630+
616631
exact_test(&(1,), "(1,)");
617632
exact_test(&(@[1,2,3,4,5,6,7,8]),
618633
"@[1, 2, 3, 4, 5, 6, 7, 8]");

0 commit comments

Comments
 (0)