@@ -302,12 +302,12 @@ impl<'tcx, T: LateLintPass<'tcx>> hir_visit::Visitor<'tcx> for LateContextAndPas
302
302
// `check_foo` method in `$methods` within this pass simply calls `check_foo`
303
303
// once per `$pass`. Compare with `declare_combined_late_lint_pass`, which is
304
304
// similar, but combines lint passes at compile time.
305
- struct RuntimeCombinedLateLintPass < ' a , ' tcx > {
306
- passes : & ' a mut [ LateLintPassObject < ' tcx > ] ,
305
+ struct RuntimeCombinedLateLintPass < ' tcx > {
306
+ passes : Vec < LateLintPassObject < ' tcx > > ,
307
307
}
308
308
309
309
#[ allow( rustc:: lint_pass_impl_without_macro) ]
310
- impl LintPass for RuntimeCombinedLateLintPass < ' _ , ' _ > {
310
+ impl LintPass for RuntimeCombinedLateLintPass < ' _ > {
311
311
fn name ( & self ) -> & ' static str {
312
312
panic ! ( )
313
313
}
@@ -318,7 +318,7 @@ impl LintPass for RuntimeCombinedLateLintPass<'_, '_> {
318
318
319
319
macro_rules! impl_late_lint_pass {
320
320
( [ ] , [ $( $( #[ $attr: meta] ) * fn $f: ident( $( $param: ident: $arg: ty) ,* ) ; ) * ] ) => {
321
- impl <' tcx> LateLintPass <' tcx> for RuntimeCombinedLateLintPass <' _ , ' tcx> {
321
+ impl <' tcx> LateLintPass <' tcx> for RuntimeCombinedLateLintPass <' tcx> {
322
322
$( fn $f( & mut self , context: & LateContext <' tcx>, $( $param: $arg) ,* ) {
323
323
for pass in self . passes. iter_mut( ) {
324
324
pass. $f( context, $( $param) ,* ) ;
@@ -355,14 +355,14 @@ pub fn late_lint_mod<'tcx, T: LateLintPass<'tcx> + 'tcx>(
355
355
late_lint_mod_inner ( tcx, module_def_id, context, builtin_lints) ;
356
356
} else {
357
357
let builtin_lints = Box :: new ( builtin_lints) as Box < dyn LateLintPass < ' tcx > > ;
358
- let mut binding = store
358
+ let passes = store
359
359
. late_module_passes
360
360
. iter ( )
361
361
. map ( |mk_pass| ( mk_pass) ( tcx) )
362
362
. chain ( std:: iter:: once ( builtin_lints) )
363
363
. collect :: < Vec < _ > > ( ) ;
364
364
365
- let pass = RuntimeCombinedLateLintPass { passes : binding . as_mut_slice ( ) } ;
365
+ let pass = RuntimeCombinedLateLintPass { passes } ;
366
366
late_lint_mod_inner ( tcx, module_def_id, context, pass) ;
367
367
}
368
368
}
@@ -393,10 +393,10 @@ fn late_lint_mod_inner<'tcx, T: LateLintPass<'tcx>>(
393
393
394
394
fn late_lint_crate < ' tcx > ( tcx : TyCtxt < ' tcx > ) {
395
395
// Note: `passes` is often empty.
396
- let passes : Vec < _ > =
396
+ let unfiltered_passes : Vec < _ > =
397
397
unerased_lint_store ( tcx. sess ) . late_passes . iter ( ) . map ( |mk_pass| ( mk_pass) ( tcx) ) . collect ( ) ;
398
398
399
- if passes . is_empty ( ) {
399
+ if unfiltered_passes . is_empty ( ) {
400
400
return ;
401
401
}
402
402
@@ -413,7 +413,7 @@ fn late_lint_crate<'tcx>(tcx: TyCtxt<'tcx>) {
413
413
414
414
let lints_that_dont_need_to_run = tcx. lints_that_dont_need_to_run ( ( ) ) ;
415
415
416
- let mut filtered_passes : Vec < Box < dyn LateLintPass < ' tcx > > > = passes
416
+ let mut passes : Vec < Box < dyn LateLintPass < ' tcx > > > = unfiltered_passes
417
417
. into_iter ( )
418
418
. filter ( |pass| {
419
419
let lints = ( * * pass) . get_lints ( ) ;
@@ -424,8 +424,8 @@ fn late_lint_crate<'tcx>(tcx: TyCtxt<'tcx>) {
424
424
} )
425
425
. collect ( ) ;
426
426
427
- filtered_passes . push ( Box :: new ( HardwiredLints ) ) ;
428
- let pass = RuntimeCombinedLateLintPass { passes : & mut filtered_passes [ .. ] } ;
427
+ passes . push ( Box :: new ( HardwiredLints ) ) ;
428
+ let pass = RuntimeCombinedLateLintPass { passes } ;
429
429
late_lint_crate_inner ( tcx, context, pass) ;
430
430
}
431
431
0 commit comments