auto merge of #7683 : alexcrichton/rust/issue-7625, r=thestinger

Closes #7625
This commit is contained in:
bors 2013-07-10 17:13:50 -07:00
commit 9b5d523126
1 changed files with 8 additions and 2 deletions

View File

@ -206,11 +206,13 @@ impl ReprVisitor {
inner: *TyDesc)
-> bool {
let mut p = ptr;
let end = ptr::offset(p, len);
let (sz, al) = unsafe { ((*inner).size, (*inner).align) };
self.writer.write_char('[');
let mut first = true;
while (p as uint) < (end as uint) {
let mut left = len;
// unit structs have 0 size, and don't loop forever.
let dec = if sz == 0 {1} else {sz};
while left > 0 {
if first {
first = false;
} else {
@ -219,6 +221,7 @@ impl ReprVisitor {
self.write_mut_qualifier(mtbl);
self.visit_ptr_inner(p as *c_void, inner);
p = align(ptr::offset(p, sz) as uint, al) as *u8;
left -= dec;
}
self.writer.write_char(']');
true
@ -635,4 +638,7 @@ fn test_repr() {
"(10, ~\"hello\")");
exact_test(&(10_u64, ~"hello"),
"(10, ~\"hello\")");
struct Foo;
exact_test(&(~[Foo, Foo, Foo]), "~[{}, {}, {}]");
}