@@ -221,100 +221,102 @@ fn calc_unused_spans(
221
221
}
222
222
}
223
223
224
- pub fn check_crate ( resolver : & mut Resolver < ' _ > , krate : & ast:: Crate ) {
225
- for directive in resolver. potentially_unused_imports . iter ( ) {
226
- match directive. subclass {
227
- _ if directive. used . get ( ) ||
228
- directive. vis . get ( ) == ty:: Visibility :: Public ||
229
- directive. span . is_dummy ( ) => {
230
- if let ImportDirectiveSubclass :: MacroUse = directive. subclass {
231
- if !directive. span . is_dummy ( ) {
232
- resolver. session . buffer_lint (
233
- lint:: builtin:: MACRO_USE_EXTERN_CRATE ,
234
- directive. id ,
235
- directive. span ,
236
- "deprecated `#[macro_use]` directive used to \
237
- import macros should be replaced at use sites \
238
- with a `use` statement to import the macro \
239
- instead",
240
- ) ;
224
+ impl Resolver < ' _ > {
225
+ crate fn check_unused ( & mut self , krate : & ast:: Crate ) {
226
+ for directive in self . potentially_unused_imports . iter ( ) {
227
+ match directive. subclass {
228
+ _ if directive. used . get ( ) ||
229
+ directive. vis . get ( ) == ty:: Visibility :: Public ||
230
+ directive. span . is_dummy ( ) => {
231
+ if let ImportDirectiveSubclass :: MacroUse = directive. subclass {
232
+ if !directive. span . is_dummy ( ) {
233
+ self . session . buffer_lint (
234
+ lint:: builtin:: MACRO_USE_EXTERN_CRATE ,
235
+ directive. id ,
236
+ directive. span ,
237
+ "deprecated `#[macro_use]` directive used to \
238
+ import macros should be replaced at use sites \
239
+ with a `use` statement to import the macro \
240
+ instead",
241
+ ) ;
242
+ }
241
243
}
242
244
}
245
+ ImportDirectiveSubclass :: ExternCrate { .. } => {
246
+ self . maybe_unused_extern_crates . push ( ( directive. id , directive. span ) ) ;
247
+ }
248
+ ImportDirectiveSubclass :: MacroUse => {
249
+ let lint = lint:: builtin:: UNUSED_IMPORTS ;
250
+ let msg = "unused `#[macro_use]` import" ;
251
+ self . session . buffer_lint ( lint, directive. id , directive. span , msg) ;
252
+ }
253
+ _ => { }
243
254
}
244
- ImportDirectiveSubclass :: ExternCrate { .. } => {
245
- resolver. maybe_unused_extern_crates . push ( ( directive. id , directive. span ) ) ;
246
- }
247
- ImportDirectiveSubclass :: MacroUse => {
248
- let lint = lint:: builtin:: UNUSED_IMPORTS ;
249
- let msg = "unused `#[macro_use]` import" ;
250
- resolver. session . buffer_lint ( lint, directive. id , directive. span , msg) ;
251
- }
252
- _ => { }
253
255
}
254
- }
255
256
256
- let mut visitor = UnusedImportCheckVisitor {
257
- r : resolver,
258
- unused_imports : Default :: default ( ) ,
259
- base_use_tree : None ,
260
- base_id : ast:: DUMMY_NODE_ID ,
261
- item_span : DUMMY_SP ,
262
- } ;
263
- visit:: walk_crate ( & mut visitor, krate) ;
264
-
265
- for unused in visitor. unused_imports . values ( ) {
266
- let mut fixes = Vec :: new ( ) ;
267
- let mut spans = match calc_unused_spans ( unused, unused. use_tree , unused. use_tree_id ) {
268
- UnusedSpanResult :: Used => continue ,
269
- UnusedSpanResult :: FlatUnused ( span, remove) => {
270
- fixes. push ( ( remove, String :: new ( ) ) ) ;
271
- vec ! [ span]
272
- }
273
- UnusedSpanResult :: NestedFullUnused ( spans, remove) => {
274
- fixes. push ( ( remove, String :: new ( ) ) ) ;
275
- spans
276
- }
277
- UnusedSpanResult :: NestedPartialUnused ( spans, remove) => {
278
- for fix in & remove {
279
- fixes. push ( ( * fix, String :: new ( ) ) ) ;
280
- }
281
- spans
282
- }
257
+ let mut visitor = UnusedImportCheckVisitor {
258
+ r : self ,
259
+ unused_imports : Default :: default ( ) ,
260
+ base_use_tree : None ,
261
+ base_id : ast:: DUMMY_NODE_ID ,
262
+ item_span : DUMMY_SP ,
283
263
} ;
264
+ visit:: walk_crate ( & mut visitor, krate) ;
284
265
285
- let len = spans. len ( ) ;
286
- spans. sort ( ) ;
287
- let ms = MultiSpan :: from_spans ( spans. clone ( ) ) ;
288
- let mut span_snippets = spans. iter ( )
289
- . filter_map ( |s| {
290
- match visitor. r . session . source_map ( ) . span_to_snippet ( * s) {
291
- Ok ( s) => Some ( format ! ( "`{}`" , s) ) ,
292
- _ => None ,
266
+ for unused in visitor. unused_imports . values ( ) {
267
+ let mut fixes = Vec :: new ( ) ;
268
+ let mut spans = match calc_unused_spans ( unused, unused. use_tree , unused. use_tree_id ) {
269
+ UnusedSpanResult :: Used => continue ,
270
+ UnusedSpanResult :: FlatUnused ( span, remove) => {
271
+ fixes. push ( ( remove, String :: new ( ) ) ) ;
272
+ vec ! [ span]
273
+ }
274
+ UnusedSpanResult :: NestedFullUnused ( spans, remove) => {
275
+ fixes. push ( ( remove, String :: new ( ) ) ) ;
276
+ spans
293
277
}
294
- } ) . collect :: < Vec < String > > ( ) ;
295
- span_snippets. sort ( ) ;
296
- let msg = format ! ( "unused import{}{}" ,
297
- if len > 1 { "s" } else { "" } ,
298
- if !span_snippets. is_empty( ) {
299
- format!( ": {}" , span_snippets. join( ", " ) )
300
- } else {
301
- String :: new( )
302
- } ) ;
278
+ UnusedSpanResult :: NestedPartialUnused ( spans, remove) => {
279
+ for fix in & remove {
280
+ fixes. push ( ( * fix, String :: new ( ) ) ) ;
281
+ }
282
+ spans
283
+ }
284
+ } ;
303
285
304
- let fix_msg = if fixes. len ( ) == 1 && fixes[ 0 ] . 0 == unused. item_span {
305
- "remove the whole `use` item"
306
- } else if spans. len ( ) > 1 {
307
- "remove the unused imports"
308
- } else {
309
- "remove the unused import"
310
- } ;
286
+ let len = spans. len ( ) ;
287
+ spans. sort ( ) ;
288
+ let ms = MultiSpan :: from_spans ( spans. clone ( ) ) ;
289
+ let mut span_snippets = spans. iter ( )
290
+ . filter_map ( |s| {
291
+ match visitor. r . session . source_map ( ) . span_to_snippet ( * s) {
292
+ Ok ( s) => Some ( format ! ( "`{}`" , s) ) ,
293
+ _ => None ,
294
+ }
295
+ } ) . collect :: < Vec < String > > ( ) ;
296
+ span_snippets. sort ( ) ;
297
+ let msg = format ! ( "unused import{}{}" ,
298
+ if len > 1 { "s" } else { "" } ,
299
+ if !span_snippets. is_empty( ) {
300
+ format!( ": {}" , span_snippets. join( ", " ) )
301
+ } else {
302
+ String :: new( )
303
+ } ) ;
311
304
312
- visitor. r . session . buffer_lint_with_diagnostic (
313
- lint:: builtin:: UNUSED_IMPORTS ,
314
- unused. use_tree_id ,
315
- ms,
316
- & msg,
317
- lint:: builtin:: BuiltinLintDiagnostics :: UnusedImports ( fix_msg. into ( ) , fixes) ,
318
- ) ;
305
+ let fix_msg = if fixes. len ( ) == 1 && fixes[ 0 ] . 0 == unused. item_span {
306
+ "remove the whole `use` item"
307
+ } else if spans. len ( ) > 1 {
308
+ "remove the unused imports"
309
+ } else {
310
+ "remove the unused import"
311
+ } ;
312
+
313
+ visitor. r . session . buffer_lint_with_diagnostic (
314
+ lint:: builtin:: UNUSED_IMPORTS ,
315
+ unused. use_tree_id ,
316
+ ms,
317
+ & msg,
318
+ lint:: builtin:: BuiltinLintDiagnostics :: UnusedImports ( fix_msg. into ( ) , fixes) ,
319
+ ) ;
320
+ }
319
321
}
320
322
}
0 commit comments