@@ -4,7 +4,11 @@ use ide_db::{
4
4
defs:: { classify_name_ref, Definition , NameRefClass } ,
5
5
search:: SearchScope ,
6
6
} ;
7
- use syntax:: { algo, ast, AstNode , Direction , SyntaxNode , SyntaxToken , T } ;
7
+ use syntax:: {
8
+ algo,
9
+ ast:: { self , make} ,
10
+ AstNode , Direction , SyntaxNode , SyntaxToken , T ,
11
+ } ;
8
12
9
13
use crate :: {
10
14
assist_context:: { AssistBuilder , AssistContext , Assists } ,
@@ -249,16 +253,19 @@ fn replace_ast(
249
253
250
254
let new_use_trees: Vec < ast:: UseTree > = names_to_import
251
255
. iter ( )
252
- . map ( |n| ast:: make:: use_tree ( ast:: make:: path_from_text ( & n. to_string ( ) ) , None , None , false ) )
256
+ . map ( |n| {
257
+ let path = make:: path_unqualified ( make:: path_segment ( make:: name_ref ( & n. to_string ( ) ) ) ) ;
258
+ make:: use_tree ( path, None , None , false )
259
+ } )
253
260
. collect ( ) ;
254
261
255
262
let use_trees = [ & existing_use_trees[ ..] , & new_use_trees[ ..] ] . concat ( ) ;
256
263
257
264
match use_trees. as_slice ( ) {
258
265
[ name] => {
259
266
if let Some ( end_path) = name. path ( ) {
260
- let replacement = ast :: make:: use_tree (
261
- ast :: make:: path_from_text ( & format ! ( "{}::{}" , path, end_path) ) ,
267
+ let replacement = make:: use_tree (
268
+ make:: path_from_text ( & format ! ( "{}::{}" , path, end_path) ) ,
262
269
None ,
263
270
None ,
264
271
false ,
@@ -273,15 +280,12 @@ fn replace_ast(
273
280
}
274
281
names => {
275
282
let replacement = match parent {
276
- Either :: Left ( _) => ast:: make:: use_tree (
277
- path,
278
- Some ( ast:: make:: use_tree_list ( names. to_owned ( ) ) ) ,
279
- None ,
280
- false ,
281
- )
282
- . syntax ( )
283
- . clone ( ) ,
284
- Either :: Right ( _) => ast:: make:: use_tree_list ( names. to_owned ( ) ) . syntax ( ) . clone ( ) ,
283
+ Either :: Left ( _) => {
284
+ make:: use_tree ( path, Some ( make:: use_tree_list ( names. to_owned ( ) ) ) , None , false )
285
+ . syntax ( )
286
+ . clone ( )
287
+ }
288
+ Either :: Right ( _) => make:: use_tree_list ( names. to_owned ( ) ) . syntax ( ) . clone ( ) ,
285
289
} ;
286
290
287
291
algo:: diff (
0 commit comments