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