@@ -37,7 +37,7 @@ pub struct TtReader {
37
37
/* for MBE-style macro transcription */
38
38
priv interpolations : RefCell < HashMap < Ident , @named_match > > ,
39
39
priv repeat_idx : RefCell < ~[ uint ] > ,
40
- repeat_len : ~[ uint ] ,
40
+ priv repeat_len : RefCell < ~[ uint ] > ,
41
41
/* cached: */
42
42
cur_tok : Token ,
43
43
cur_span : Span
@@ -64,7 +64,7 @@ pub fn new_tt_reader(sp_diag: @mut SpanHandler,
64
64
Some ( x) => RefCell :: new ( x) ,
65
65
} ,
66
66
repeat_idx : RefCell :: new ( ~[ ] ) ,
67
- repeat_len : ~[ ] ,
67
+ repeat_len : RefCell :: new ( ~[ ] ) ,
68
68
/* dummy values, never read: */
69
69
cur_tok : EOF ,
70
70
cur_span : DUMMY_SP
@@ -189,7 +189,8 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
189
189
/* done with this set; pop or repeat? */
190
190
if ! r. stack . dotdotdoted || {
191
191
let repeat_idx = r. repeat_idx . borrow ( ) ;
192
- * repeat_idx. get ( ) . last ( ) == * r. repeat_len . last ( ) - 1
192
+ let repeat_len = r. repeat_len . borrow ( ) ;
193
+ * repeat_idx. get ( ) . last ( ) == * repeat_len. get ( ) . last ( ) - 1
193
194
} {
194
195
195
196
match r. stack . up {
@@ -201,8 +202,9 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
201
202
if r. stack . dotdotdoted {
202
203
{
203
204
let mut repeat_idx = r. repeat_idx . borrow_mut ( ) ;
205
+ let mut repeat_len = r. repeat_len . borrow_mut ( ) ;
204
206
repeat_idx. get ( ) . pop ( ) ;
205
- r . repeat_len . pop ( ) ;
207
+ repeat_len. get ( ) . pop ( ) ;
206
208
}
207
209
}
208
210
@@ -275,7 +277,8 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
275
277
} else {
276
278
{
277
279
let mut repeat_idx = r. repeat_idx . borrow_mut ( ) ;
278
- r. repeat_len . push ( len) ;
280
+ let mut repeat_len = r. repeat_len . borrow_mut ( ) ;
281
+ repeat_len. get ( ) . push ( len) ;
279
282
repeat_idx. get ( ) . push ( 0 u) ;
280
283
r. stack = @mut TtFrame {
281
284
forest : tts,
0 commit comments