@@ -338,7 +338,7 @@ impl Resolver<'_, '_> {
338
338
339
339
for unused in visitor. unused_imports . values ( ) {
340
340
let mut fixes = Vec :: new ( ) ;
341
- let mut spans = match calc_unused_spans ( unused, unused. use_tree , unused. use_tree_id ) {
341
+ let spans = match calc_unused_spans ( unused, unused. use_tree , unused. use_tree_id ) {
342
342
UnusedSpanResult :: Used => continue ,
343
343
UnusedSpanResult :: FlatUnused ( span, remove) => {
344
344
fixes. push ( ( remove, String :: new ( ) ) ) ;
@@ -356,20 +356,19 @@ impl Resolver<'_, '_> {
356
356
}
357
357
} ;
358
358
359
- let len = spans . len ( ) ;
360
- spans . sort ( ) ;
361
- let ms = MultiSpan :: from_spans ( spans . clone ( ) ) ;
362
- let mut span_snippets = spans
359
+ let ms = MultiSpan :: from_spans ( spans ) ;
360
+
361
+ let mut span_snippets = ms
362
+ . primary_spans ( )
363
363
. iter ( )
364
- . filter_map ( |s| match tcx. sess . source_map ( ) . span_to_snippet ( * s) {
365
- Ok ( s) => Some ( format ! ( "`{s}`" ) ) ,
366
- _ => None ,
367
- } )
364
+ . filter_map ( |span| tcx. sess . source_map ( ) . span_to_snippet ( * span) . ok ( ) )
365
+ . map ( |s| format ! ( "`{s}`" ) )
368
366
. collect :: < Vec < String > > ( ) ;
369
367
span_snippets. sort ( ) ;
368
+
370
369
let msg = format ! (
371
370
"unused import{}{}" ,
372
- pluralize!( len) ,
371
+ pluralize!( ms . primary_spans ( ) . len( ) ) ,
373
372
if !span_snippets. is_empty( ) {
374
373
format!( ": {}" , span_snippets. join( ", " ) )
375
374
} else {
@@ -379,7 +378,7 @@ impl Resolver<'_, '_> {
379
378
380
379
let fix_msg = if fixes. len ( ) == 1 && fixes[ 0 ] . 0 == unused. item_span {
381
380
"remove the whole `use` item"
382
- } else if spans . len ( ) > 1 {
381
+ } else if ms . primary_spans ( ) . len ( ) > 1 {
383
382
"remove the unused imports"
384
383
} else {
385
384
"remove the unused import"
0 commit comments