@@ -144,28 +144,30 @@ enum VariantState {
144
144
}
145
145
146
146
pub struct ReprVisitor {
147
- mut ptr : * c_void ,
148
- mut ptr_stk : ~[ * c_void ] ,
149
- mut var_stk : ~[ VariantState ] ,
147
+ ptr : @ mut * c_void ,
148
+ ptr_stk : @ mut ~[ * c_void ] ,
149
+ var_stk : @ mut ~[ VariantState ] ,
150
150
writer : @Writer
151
151
}
152
152
pub fn ReprVisitor ( ptr : * c_void , writer : @Writer ) -> ReprVisitor {
153
- ReprVisitor { ptr : ptr,
154
- ptr_stk : ~[ ] ,
155
- var_stk : ~[ ] ,
156
- writer : writer }
153
+ ReprVisitor {
154
+ ptr : @mut ptr,
155
+ ptr_stk : @mut ~[ ] ,
156
+ var_stk : @mut ~[ ] ,
157
+ writer : writer,
158
+ }
157
159
}
158
160
159
161
impl MovePtr for ReprVisitor {
160
162
#[ inline( always) ]
161
163
fn move_ptr ( & self , adjustment : & fn ( * c_void ) -> * c_void ) {
162
- self . ptr = adjustment ( self . ptr ) ;
164
+ * self . ptr = adjustment ( * self . ptr ) ;
163
165
}
164
166
fn push_ptr ( & self ) {
165
- self . ptr_stk . push ( self . ptr ) ;
167
+ self . ptr_stk . push ( * self . ptr ) ;
166
168
}
167
169
fn pop_ptr ( & self ) {
168
- self . ptr = self . ptr_stk . pop ( ) ;
170
+ * self . ptr = self . ptr_stk . pop ( ) ;
169
171
}
170
172
}
171
173
@@ -176,14 +178,14 @@ pub impl ReprVisitor {
176
178
#[ inline( always) ]
177
179
fn get < T > ( & self , f : & fn ( & T ) ) -> bool {
178
180
unsafe {
179
- f ( transmute :: < * c_void , & T > ( copy self . ptr ) ) ;
181
+ f ( transmute :: < * c_void , & T > ( * self . ptr ) ) ;
180
182
}
181
183
true
182
184
}
183
185
184
186
#[ inline( always) ]
185
187
fn visit_inner ( & self , inner : * TyDesc ) -> bool {
186
- self . visit_ptr_inner ( self . ptr , inner)
188
+ self . visit_ptr_inner ( * self . ptr , inner)
187
189
}
188
190
189
191
#[ inline( always) ]
@@ -482,8 +484,31 @@ impl TyVisitor for ReprVisitor {
482
484
true
483
485
}
484
486
487
+ <<<<<<< HEAD
485
488
fn visit_enum_variant_field( & self , i : uint , _offset : uint , inner : * TyDesc ) -> bool {
486
489
match self . var_stk[ vec:: uniq_len ( & const self. var_stk ) - 1 ] {
490
+ =======
491
+ #[ cfg ( stage0 ) ]
492
+ fn visit_enum_variant_field ( & self , i : uint , inner : * TyDesc ) -> bool {
493
+ match self . var_stk[ vec:: uniq_len ( & const * self . var_stk ) - 1 ] {
494
+ Degenerate | TagMatch => {
495
+ if i != 0 {
496
+ self . writer. write_str( ", ") ;
497
+ }
498
+ if ! self . visit_inner ( inner) {
499
+ return false ;
500
+ }
501
+ }
502
+ TagMismatch => ( )
503
+ }
504
+ true
505
+ }
506
+
507
+ #[ cfg( not( stage0) ) ]
508
+ fn visit_enum_variant_field ( & self , i : uint , _: uint , inner : * TyDesc )
509
+ -> bool {
510
+ match self . var_stk [ vec:: uniq_len ( & const * self . var_stk ) - 1 ] {
511
+ >>>>>>> libcore: Remove mutable fields from repr
487
512
Matched => {
488
513
if i != 0 {
489
514
self . writer . write_str ( ", " ) ;
@@ -497,11 +522,31 @@ impl TyVisitor for ReprVisitor {
497
522
true
498
523
}
499
524
525
+ <<<<<<< HEAD
526
+ =======
527
+ #[ cfg ( stage0 ) ]
500
528
fn visit_leave_enum_variant ( & self , _variant : uint ,
501
529
_disr_val : int ,
502
530
n_fields : uint ,
503
531
_name : & str ) -> bool {
504
- match self . var_stk [ vec:: uniq_len ( & const self . var_stk ) - 1 ] {
532
+ match self . var_stk[ vec:: uniq_len ( & const * self . var_stk ) - 1 ] {
533
+ Degenerate | TagMatch => {
534
+ if n_fields > 0 {
535
+ self . writer. write_char( ')' ) ;
536
+ }
537
+ }
538
+ TagMismatch => ( )
539
+ }
540
+ true
541
+ }
542
+
543
+ #[ cfg( not( stage0) ) ]
544
+ >>>>>>> libcore: Remove mutable fields from repr
545
+ fn visit_leave_enum_variant ( & self , _variant : uint ,
546
+ _disr_val : int ,
547
+ n_fields : uint ,
548
+ _name : & str ) -> bool {
549
+ match self . var_stk[ vec:: uniq_len ( & const * self . var_stk ) - 1 ] {
505
550
Matched => {
506
551
if n_fields > 0 {
507
552
self . writer. write_char( ')' ) ;
0 commit comments