@@ -484,12 +484,12 @@ impl Convertor {
484
484
fn new (
485
485
node : & SyntaxNode ,
486
486
global_offset : TextSize ,
487
- replace : FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
488
- append : FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
487
+ mut replace : FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
488
+ mut append : FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
489
489
) -> Convertor {
490
490
let range = node. text_range ( ) ;
491
491
let mut preorder = node. preorder_with_tokens ( ) ;
492
- let ( first, synthetic) = Self :: next_token ( & mut preorder, & replace, & append) ;
492
+ let ( first, synthetic) = Self :: next_token ( & mut preorder, & mut replace, & mut append) ;
493
493
Convertor {
494
494
id_alloc : { TokenIdAlloc { map : TokenMap :: default ( ) , global_offset, next_id : 0 } } ,
495
495
current : first,
@@ -504,19 +504,18 @@ impl Convertor {
504
504
505
505
fn next_token (
506
506
preorder : & mut PreorderWithTokens ,
507
- replace : & FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
508
- append : & FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
507
+ replace : & mut FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
508
+ append : & mut FxHashMap < SyntaxNode , Vec < SyntheticToken > > ,
509
509
) -> ( Option < SyntaxToken > , Vec < SyntheticToken > ) {
510
510
while let Some ( ev) = preorder. next ( ) {
511
511
let ele = match ev {
512
512
WalkEvent :: Enter ( ele) => ele,
513
513
WalkEvent :: Leave ( SyntaxElement :: Node ( node) ) => {
514
- if let Some ( v) = append. get ( & node) {
514
+ if let Some ( mut v) = append. remove ( & node) {
515
515
eprintln ! ( "after {:?}, appending {:?}" , node, v) ;
516
516
if !v. is_empty ( ) {
517
- let mut reversed = v. clone ( ) ;
518
- reversed. reverse ( ) ;
519
- return ( None , reversed) ;
517
+ v. reverse ( ) ;
518
+ return ( None , v) ;
520
519
}
521
520
}
522
521
continue ;
@@ -526,13 +525,12 @@ impl Convertor {
526
525
match ele {
527
526
SyntaxElement :: Token ( t) => return ( Some ( t) , Vec :: new ( ) ) ,
528
527
SyntaxElement :: Node ( node) => {
529
- if let Some ( v) = replace. get ( & node) {
528
+ if let Some ( mut v) = replace. remove ( & node) {
530
529
preorder. skip_subtree ( ) ;
531
530
eprintln ! ( "replacing {:?} by {:?}" , node, v) ;
532
531
if !v. is_empty ( ) {
533
- let mut reversed = v. clone ( ) ;
534
- reversed. reverse ( ) ;
535
- return ( None , reversed) ;
532
+ v. reverse ( ) ;
533
+ return ( None , v) ;
536
534
}
537
535
}
538
536
}
@@ -603,7 +601,7 @@ impl TokenConvertor for Convertor {
603
601
if let Some ( synth_token) = self . current_synthetic . pop ( ) {
604
602
if self . current_synthetic . is_empty ( ) {
605
603
let ( new_current, new_synth) =
606
- Self :: next_token ( & mut self . preorder , & self . replace , & self . append ) ;
604
+ Self :: next_token ( & mut self . preorder , & mut self . replace , & mut self . append ) ;
607
605
self . current = new_current;
608
606
self . current_synthetic = new_synth;
609
607
}
@@ -616,7 +614,7 @@ impl TokenConvertor for Convertor {
616
614
return None ;
617
615
}
618
616
let ( new_current, new_synth) =
619
- Self :: next_token ( & mut self . preorder , & self . replace , & self . append ) ;
617
+ Self :: next_token ( & mut self . preorder , & mut self . replace , & mut self . append ) ;
620
618
self . current = new_current;
621
619
self . current_synthetic = new_synth;
622
620
let token = if curr. kind ( ) . is_punct ( ) {
0 commit comments