@@ -307,12 +307,12 @@ impl<'tcx, T: LateLintPass<'tcx>> hir_visit::Visitor<'tcx> for LateContextAndPas
307
307
// `check_foo` method in `$methods` within this pass simply calls `check_foo`
308
308
// once per `$pass`. Compare with `declare_combined_late_lint_pass`, which is
309
309
// similar, but combines lint passes at compile time.
310
- struct RuntimeCombinedLateLintPass < ' a , ' tcx > {
311
- passes : & ' a mut [ LateLintPassObject < ' tcx > ] ,
310
+ struct RuntimeCombinedLateLintPass < ' tcx > {
311
+ passes : Vec < LateLintPassObject < ' tcx > > ,
312
312
}
313
313
314
314
#[ allow( rustc:: lint_pass_impl_without_macro) ]
315
- impl LintPass for RuntimeCombinedLateLintPass < ' _ , ' _ > {
315
+ impl LintPass for RuntimeCombinedLateLintPass < ' _ > {
316
316
fn name ( & self ) -> & ' static str {
317
317
panic ! ( )
318
318
}
@@ -323,7 +323,7 @@ impl LintPass for RuntimeCombinedLateLintPass<'_, '_> {
323
323
324
324
macro_rules! impl_late_lint_pass {
325
325
( [ ] , [ $( $( #[ $attr: meta] ) * fn $f: ident( $( $param: ident: $arg: ty) ,* ) ; ) * ] ) => {
326
- impl <' tcx> LateLintPass <' tcx> for RuntimeCombinedLateLintPass <' _ , ' tcx> {
326
+ impl <' tcx> LateLintPass <' tcx> for RuntimeCombinedLateLintPass <' tcx> {
327
327
$( fn $f( & mut self , context: & LateContext <' tcx>, $( $param: $arg) ,* ) {
328
328
for pass in self . passes. iter_mut( ) {
329
329
pass. $f( context, $( $param) ,* ) ;
@@ -360,14 +360,14 @@ pub fn late_lint_mod<'tcx, T: LateLintPass<'tcx> + 'tcx>(
360
360
late_lint_mod_inner ( tcx, module_def_id, context, builtin_lints) ;
361
361
} else {
362
362
let builtin_lints = Box :: new ( builtin_lints) as Box < dyn LateLintPass < ' tcx > > ;
363
- let mut binding = store
363
+ let passes = store
364
364
. late_module_passes
365
365
. iter ( )
366
366
. map ( |mk_pass| ( mk_pass) ( tcx) )
367
367
. chain ( std:: iter:: once ( builtin_lints) )
368
368
. collect :: < Vec < _ > > ( ) ;
369
369
370
- let pass = RuntimeCombinedLateLintPass { passes : binding . as_mut_slice ( ) } ;
370
+ let pass = RuntimeCombinedLateLintPass { passes } ;
371
371
late_lint_mod_inner ( tcx, module_def_id, context, pass) ;
372
372
}
373
373
}
@@ -398,10 +398,10 @@ fn late_lint_mod_inner<'tcx, T: LateLintPass<'tcx>>(
398
398
399
399
fn late_lint_crate < ' tcx > ( tcx : TyCtxt < ' tcx > ) {
400
400
// Note: `passes` is often empty.
401
- let passes : Vec < _ > =
401
+ let unfiltered_passes : Vec < _ > =
402
402
unerased_lint_store ( tcx. sess ) . late_passes . iter ( ) . map ( |mk_pass| ( mk_pass) ( tcx) ) . collect ( ) ;
403
403
404
- if passes . is_empty ( ) {
404
+ if unfiltered_passes . is_empty ( ) {
405
405
return ;
406
406
}
407
407
@@ -418,7 +418,7 @@ fn late_lint_crate<'tcx>(tcx: TyCtxt<'tcx>) {
418
418
419
419
let lints_that_dont_need_to_run = tcx. lints_that_dont_need_to_run ( ( ) ) ;
420
420
421
- let mut filtered_passes : Vec < Box < dyn LateLintPass < ' tcx > > > = passes
421
+ let mut passes : Vec < Box < dyn LateLintPass < ' tcx > > > = unfiltered_passes
422
422
. into_iter ( )
423
423
. filter ( |pass| {
424
424
let lints = ( * * pass) . get_lints ( ) ;
@@ -429,8 +429,8 @@ fn late_lint_crate<'tcx>(tcx: TyCtxt<'tcx>) {
429
429
} )
430
430
. collect ( ) ;
431
431
432
- filtered_passes . push ( Box :: new ( HardwiredLints ) ) ;
433
- let pass = RuntimeCombinedLateLintPass { passes : & mut filtered_passes [ .. ] } ;
432
+ passes . push ( Box :: new ( HardwiredLints ) ) ;
433
+ let pass = RuntimeCombinedLateLintPass { passes } ;
434
434
late_lint_crate_inner ( tcx, context, pass) ;
435
435
}
436
436
0 commit comments