@@ -32,24 +32,13 @@ use Edit::*;
32
32
pub ( crate ) fn merge_imports ( acc : & mut Assists , ctx : & AssistContext < ' _ > ) -> Option < ( ) > {
33
33
let ( target, edits) = if ctx. has_empty_selection ( ) {
34
34
// Merge a neighbor
35
- let mut tree: ast:: UseTree = ctx. find_node_at_offset ( ) ?;
36
- if ctx. config . insert_use . granularity == ImportGranularity :: One
37
- && tree. parent_use_tree_list ( ) . is_some ( )
38
- {
39
- cov_mark:: hit!( resolve_top_use_tree_for_import_one) ;
40
- tree = tree. top_use_tree ( ) ;
41
- }
35
+ cov_mark:: hit!( merge_with_use_item_neighbors) ;
36
+ let tree = ctx. find_node_at_offset :: < ast:: UseTree > ( ) ?. top_use_tree ( ) ;
42
37
let target = tree. syntax ( ) . text_range ( ) ;
43
38
44
- let edits = if let Some ( use_item) = tree. syntax ( ) . parent ( ) . and_then ( ast:: Use :: cast) {
45
- cov_mark:: hit!( merge_with_use_item_neighbors) ;
46
- let mut neighbor = next_prev ( ) . find_map ( |dir| neighbor ( & use_item, dir) ) . into_iter ( ) ;
47
- use_item. try_merge_from ( & mut neighbor, & ctx. config . insert_use )
48
- } else {
49
- cov_mark:: hit!( merge_with_use_tree_neighbors) ;
50
- let mut neighbor = next_prev ( ) . find_map ( |dir| neighbor ( & tree, dir) ) . into_iter ( ) ;
51
- tree. clone ( ) . try_merge_from ( & mut neighbor, & ctx. config . insert_use )
52
- } ;
39
+ let use_item = tree. syntax ( ) . parent ( ) . and_then ( ast:: Use :: cast) ?;
40
+ let mut neighbor = next_prev ( ) . find_map ( |dir| neighbor ( & use_item, dir) ) . into_iter ( ) ;
41
+ let edits = use_item. try_merge_from ( & mut neighbor, & ctx. config . insert_use ) ;
53
42
( target, edits?)
54
43
} else {
55
44
// Merge selected
@@ -159,10 +148,7 @@ impl Edit {
159
148
160
149
#[ cfg( test) ]
161
150
mod tests {
162
- use crate :: tests:: {
163
- check_assist, check_assist_import_one, check_assist_not_applicable,
164
- check_assist_not_applicable_for_import_one,
165
- } ;
151
+ use crate :: tests:: { check_assist, check_assist_import_one, check_assist_not_applicable} ;
166
152
167
153
use super :: * ;
168
154
@@ -206,10 +192,7 @@ use std::fmt::{Debug, Display};
206
192
) ;
207
193
208
194
// The assist macro below calls `check_assist_import_one` 4 times with different input
209
- // use item variations based on the first 2 input parameters, but only 2 calls
210
- // contain `use {std::fmt$0::{Display, Debug}};` for which the top use tree will need
211
- // to be resolved.
212
- cov_mark:: check_count!( resolve_top_use_tree_for_import_one, 2 ) ;
195
+ // use item variations based on the first 2 input parameters.
213
196
cov_mark:: check_count!( merge_with_use_item_neighbors, 4 ) ;
214
197
check_assist_import_one_variations ! (
215
198
"std::fmt$0::{Display, Debug}" ,
@@ -257,7 +240,7 @@ use std::fmt::{Debug, Display};
257
240
}
258
241
259
242
#[ test]
260
- fn merge_self1 ( ) {
243
+ fn merge_self ( ) {
261
244
check_assist (
262
245
merge_imports,
263
246
r"
@@ -275,28 +258,6 @@ use std::fmt::{self, Display};
275
258
) ;
276
259
}
277
260
278
- #[ test]
279
- fn merge_self2 ( ) {
280
- check_assist (
281
- merge_imports,
282
- r"
283
- use std::{fmt, $0fmt::Display};
284
- " ,
285
- r"
286
- use std::{fmt::{self, Display}};
287
- " ,
288
- ) ;
289
- }
290
-
291
- #[ test]
292
- fn not_applicable_to_single_one_style_import ( ) {
293
- cov_mark:: check!( resolve_top_use_tree_for_import_one) ;
294
- check_assist_not_applicable_for_import_one (
295
- merge_imports,
296
- "use {std::{fmt, $0fmt::Display}};" ,
297
- ) ;
298
- }
299
-
300
261
#[ test]
301
262
fn skip_pub1 ( ) {
302
263
check_assist_not_applicable (
@@ -385,14 +346,14 @@ pub(in this::path) use std::fmt::{Debug, Display};
385
346
386
347
#[ test]
387
348
fn test_merge_nested ( ) {
388
- cov_mark:: check!( merge_with_use_tree_neighbors) ;
389
349
check_assist (
390
350
merge_imports,
391
351
r"
392
- use std::{fmt$0::Debug, fmt::Display};
352
+ use std::{fmt$0::Debug, fmt::Error};
353
+ use std::{fmt::Write, fmt::Display};
393
354
" ,
394
355
r"
395
- use std::{ fmt::{Debug, Display} };
356
+ use std::fmt::{Debug, Display, Error, Write };
396
357
" ,
397
358
) ;
398
359
}
@@ -402,10 +363,11 @@ use std::{fmt::{Debug, Display}};
402
363
check_assist (
403
364
merge_imports,
404
365
r"
405
- use std::{fmt::Debug, fmt$0::Display};
366
+ use std::{fmt::Debug, fmt$0::Error};
367
+ use std::{fmt::Write, fmt::Display};
406
368
" ,
407
369
r"
408
- use std::{ fmt::{Debug, Display} };
370
+ use std::fmt::{Debug, Display, Error, Write };
409
371
" ,
410
372
) ;
411
373
}
@@ -448,19 +410,6 @@ use std::fmt::{self, Debug, Display, Write};
448
410
) ;
449
411
}
450
412
451
- #[ test]
452
- fn test_merge_self_with_nested_self_item ( ) {
453
- check_assist (
454
- merge_imports,
455
- r"
456
- use std::{fmt$0::{self, Debug}, fmt::{Write, Display}};
457
- " ,
458
- r"
459
- use std::{fmt::{self, Debug, Display, Write}};
460
- " ,
461
- ) ;
462
- }
463
-
464
413
#[ test]
465
414
fn test_merge_nested_self_and_empty ( ) {
466
415
check_assist (
@@ -579,29 +528,27 @@ use foo::{bar, baz};
579
528
check_assist (
580
529
merge_imports,
581
530
r"
582
- use {
583
- foo$0::bar,
584
- foo::baz,
531
+ use foo$0::{
532
+ bar, baz,
585
533
};
534
+ use foo::qux;
586
535
" ,
587
536
r"
588
- use {
589
- foo::{ bar, baz} ,
537
+ use foo:: {
538
+ bar, baz, qux ,
590
539
};
591
540
" ,
592
541
) ;
593
542
check_assist (
594
543
merge_imports,
595
544
r"
596
- use {
597
- foo::baz,
598
- foo$0::bar,
545
+ use foo::{
546
+ baz, bar,
599
547
};
548
+ use foo$0::qux;
600
549
" ,
601
550
r"
602
- use {
603
- foo::{bar, baz},
604
- };
551
+ use foo::{bar, baz, qux};
605
552
" ,
606
553
) ;
607
554
}
0 commit comments