@@ -200,7 +200,7 @@ impl ReprVisitor {
200200 }
201201
202202 pub fn write_vec_range ( & self ,
203- mtbl : uint ,
203+ _mtbl : uint ,
204204 ptr : * u8 ,
205205 len : uint ,
206206 inner : * TyDesc )
@@ -218,7 +218,6 @@ impl ReprVisitor {
218218 } else {
219219 self . writer . write_str ( ", " ) ;
220220 }
221- self . write_mut_qualifier ( mtbl) ;
222221 self . visit_ptr_inner ( p as * c_void , inner) ;
223222 p = align ( ptr:: offset ( p, sz) as uint , al) as * u8 ;
224223 left -= dec;
@@ -269,6 +268,7 @@ impl TyVisitor for ReprVisitor {
269268 }
270269
271270 // Type no longer exists, vestigial function.
271+ #[ cfg( stage0) ]
272272 fn visit_str ( & self ) -> bool { fail ! ( ) ; }
273273
274274 fn visit_estr_box ( & self ) -> bool {
@@ -302,18 +302,16 @@ impl TyVisitor for ReprVisitor {
302302 }
303303 }
304304
305- fn visit_uniq ( & self , mtbl : uint , inner : * TyDesc ) -> bool {
305+ fn visit_uniq ( & self , _mtbl : uint , inner : * TyDesc ) -> bool {
306306 self . writer . write_char ( '~' ) ;
307- self . write_mut_qualifier ( mtbl) ;
308307 do self. get :: < * c_void > |b| {
309308 self . visit_ptr_inner ( * b, inner) ;
310309 }
311310 }
312311
313312 #[ cfg( not( stage0) ) ]
314- fn visit_uniq_managed ( & self , mtbl : uint , inner : * TyDesc ) -> bool {
313+ fn visit_uniq_managed ( & self , _mtbl : uint , inner : * TyDesc ) -> bool {
315314 self . writer . write_char ( '~' ) ;
316- self . write_mut_qualifier ( mtbl) ;
317315 do self. get :: < & managed:: raw:: BoxRepr > |b| {
318316 let p = ptr:: to_unsafe_ptr ( & b. data ) as * c_void ;
319317 self . visit_ptr_inner ( p, inner) ;
@@ -348,10 +346,20 @@ impl TyVisitor for ReprVisitor {
348346 fn visit_evec_box ( & self , mtbl : uint , inner : * TyDesc ) -> bool {
349347 do self . get :: < & VecRepr > |b| {
350348 self . writer . write_char ( '@' ) ;
349+ self . write_mut_qualifier ( mtbl) ;
350+ self . write_unboxed_vec_repr ( mtbl, & b. unboxed , inner) ;
351+ }
352+ }
353+
354+ #[ cfg( stage0) ]
355+ fn visit_evec_uniq ( & self , mtbl : uint , inner : * TyDesc ) -> bool {
356+ do self . get :: < & VecRepr > |b| {
357+ self . writer . write_char ( '~' ) ;
351358 self . write_unboxed_vec_repr ( mtbl, & b. unboxed , inner) ;
352359 }
353360 }
354361
362+ #[ cfg( not( stage0) ) ]
355363 fn visit_evec_uniq ( & self , mtbl : uint , inner : * TyDesc ) -> bool {
356364 do self . get :: < & UnboxedVecRepr > |b| {
357365 self . writer . write_char ( '~' ) ;
@@ -613,13 +621,14 @@ fn test_repr() {
613621 exact_test ( & ( @"hello") , "@\" hello\" " ) ;
614622 exact_test ( & ( ~"he\u10f3 llo") , "~\" he\\ u10f3llo\" " ) ;
615623
616- // FIXME #4210: the mut fields are a bit off here.
617624 exact_test ( & ( @10 ) , "@10" ) ;
618- exact_test ( & ( @mut 10 ) , "@10" ) ;
625+ exact_test ( & ( @mut 10 ) , "@10" ) ; // FIXME: #4210: incorrect
626+ exact_test ( & ( ( @mut 10 , 2 ) ) , "(@mut 10, 2)" ) ;
619627 exact_test ( & ( ~10 ) , "~10" ) ;
620628 exact_test ( & ( & 10 ) , "&10" ) ;
621629 let mut x = 10 ;
622630 exact_test ( & ( & mut x) , "&mut 10" ) ;
631+ exact_test ( & ( @mut [ 1 , 2 ] ) , "@mut [1, 2]" ) ;
623632
624633 exact_test ( & ( 1 , ) , "(1,)" ) ;
625634 exact_test ( & ( @[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ) ,
0 commit comments