@@ -335,7 +335,7 @@ impl Resolver<'_, '_> {
335335
336336 for unused in visitor. unused_imports . values ( ) {
337337 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 ) {
339339 UnusedSpanResult :: Used => continue ,
340340 UnusedSpanResult :: FlatUnused ( span, remove) => {
341341 fixes. push ( ( remove, String :: new ( ) ) ) ;
@@ -353,20 +353,19 @@ impl Resolver<'_, '_> {
353353 }
354354 } ;
355355
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 ( )
360360 . 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}`" ) )
365363 . collect :: < Vec < String > > ( ) ;
366364 span_snippets. sort ( ) ;
365+
367366 let msg = format ! (
368367 "unused import{}{}" ,
369- pluralize!( len) ,
368+ pluralize!( ms . primary_spans ( ) . len( ) ) ,
370369 if !span_snippets. is_empty( ) {
371370 format!( ": {}" , span_snippets. join( ", " ) )
372371 } else {
@@ -376,7 +375,7 @@ impl Resolver<'_, '_> {
376375
377376 let fix_msg = if fixes. len ( ) == 1 && fixes[ 0 ] . 0 == unused. item_span {
378377 "remove the whole `use` item"
379- } else if spans . len ( ) > 1 {
378+ } else if ms . primary_spans ( ) . len ( ) > 1 {
380379 "remove the unused imports"
381380 } else {
382381 "remove the unused import"
0 commit comments