@@ -86,8 +86,6 @@ pure fn lookup_cur_ad_by_ad(r: tt_reader, start: @arb_depth) -> @arb_depth {
86
86
seq ( ads, _) { ads[ idx] }
87
87
}
88
88
}
89
- unchecked { io : : println ( #fmt[ "%? / %?" , copy r. repeat_idx ,
90
- copy r. repeat_len ] ) ; } ;
91
89
vec:: foldl ( start, r. repeat_idx , red)
92
90
}
93
91
@@ -135,7 +133,7 @@ fn lockstep_iter_size(&&t: token_tree, &&r: tt_reader) -> lis {
135
133
136
134
fn tt_next_token ( & & r: tt_reader) -> { tok: token, sp: span} {
137
135
let ret_val = { tok: r. cur_tok , sp: r. cur_span } ;
138
- while r. cur . idx >= vec :: len ( r. cur . readme ) {
136
+ while r. cur . idx >= r. cur . readme . len ( ) {
139
137
/* done with this set; pop or repeat? */
140
138
if ! r. cur . dotdotdoted
141
139
|| r. repeat_idx . last ( ) == r. repeat_len . last ( ) - 1 {
@@ -193,20 +191,21 @@ fn tt_next_token(&&r: tt_reader) -> {tok: token, sp: span} {
193
191
r. sp_diag . span_fatal ( sp, msg) ;
194
192
}
195
193
lis_constraint ( len, _) {
196
- vec:: push ( r. repeat_len , len) ;
197
- vec:: push ( r. repeat_idx , 0 u) ;
198
- r. cur = @{ readme: tts, mut idx: 0 u, dotdotdoted: true ,
199
- sep: sep, up: tt_frame_up ( option:: some ( r. cur ) ) } ;
200
-
201
194
if len == 0 {
202
195
if !zerok {
203
196
r. sp_diag . span_fatal ( sp, /* FIXME #2887 blame invoker
204
197
*/
205
198
~"this must repeat at least \
206
199
once") ;
207
200
}
208
- /* we need to pop before we proceed, so recur */
201
+
202
+ r. cur . idx += 1 u;
209
203
ret tt_next_token ( r) ;
204
+ } else {
205
+ vec:: push ( r. repeat_len , len) ;
206
+ vec:: push ( r. repeat_idx , 0 u) ;
207
+ r. cur = @{ readme: tts, mut idx: 0 u, dotdotdoted: true ,
208
+ sep: sep, up: tt_frame_up ( option:: some ( r. cur ) ) } ;
210
209
}
211
210
}
212
211
}
0 commit comments