File tree 1 file changed +10
-2
lines changed
1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -221,8 +221,16 @@ pub fn expand_speculative(
221
221
fixup:: reverse_fixups ( & mut speculative_expansion. value , & spec_args_tmap, & fixups. undo_info ) ;
222
222
let ( node, rev_tmap) = token_tree_to_syntax_node ( & speculative_expansion. value , expand_to) ;
223
223
224
- let range = rev_tmap. first_range_by_token ( token_id, token_to_map. kind ( ) ) ?;
225
- let token = node. syntax_node ( ) . covering_element ( range) . into_token ( ) ?;
224
+ let syntax_node = node. syntax_node ( ) ;
225
+ let token = rev_tmap
226
+ . ranges_by_token ( token_id, token_to_map. kind ( ) )
227
+ . filter_map ( |range| syntax_node. covering_element ( range) . into_token ( ) )
228
+ . min_by_key ( |t| {
229
+ // prefer tokens of the same kind and text
230
+ // Note the inversion of the score here, as we want to prefer the first token in case
231
+ // of all tokens having the same score
232
+ ( t. kind ( ) != token_to_map. kind ( ) ) as u8 + ( t. text ( ) != token_to_map. text ( ) ) as u8
233
+ } ) ?;
226
234
Some ( ( node. syntax_node ( ) , token) )
227
235
}
228
236
You can’t perform that action at this time.
0 commit comments