]> git.lizzy.rs Git - rust.git/commitdiff
Merge `builtins` into `LateLintPassObjects`.
authorNicholas Nethercote <n.nethercote@gmail.com>
Thu, 1 Dec 2022 01:10:23 +0000 (12:10 +1100)
committerNicholas Nethercote <n.nethercote@gmail.com>
Fri, 2 Dec 2022 02:59:28 +0000 (13:59 +1100)
This avoids calling the `late_lint_{mod_pass,pass_crate}` twice.

compiler/rustc_lint/src/late.rs

index d15afa20777184739474aec72ba1291330db2261..dd697bda8a68b5c8adb9b23164e21fdca400028b 100644 (file)
@@ -358,19 +358,16 @@ fn late_lint_mod_pass<'tcx, T: LateLintPass<'tcx>>(
     }
 }
 
-pub fn late_lint_mod<'tcx, T: LateLintPass<'tcx>>(
+pub fn late_lint_mod<'tcx, T: LateLintPass<'tcx> + 'tcx>(
     tcx: TyCtxt<'tcx>,
     module_def_id: LocalDefId,
     builtin_lints: T,
 ) {
-    late_lint_mod_pass(tcx, module_def_id, builtin_lints);
-
     let mut passes: Vec<_> =
         unerased_lint_store(tcx).late_module_passes.iter().map(|pass| (pass)(tcx)).collect();
+    passes.push(Box::new(builtin_lints));
 
-    if !passes.is_empty() {
-        late_lint_mod_pass(tcx, module_def_id, LateLintPassObjects { lints: &mut passes[..] });
-    }
+    late_lint_mod_pass(tcx, module_def_id, LateLintPassObjects { lints: &mut passes[..] });
 }
 
 fn late_lint_pass_crate<'tcx, T: LateLintPass<'tcx>>(tcx: TyCtxt<'tcx>, pass: T) {
@@ -401,19 +398,16 @@ fn late_lint_pass_crate<'tcx, T: LateLintPass<'tcx>>(tcx: TyCtxt<'tcx>, pass: T)
     })
 }
 
-fn late_lint_crate<'tcx, T: LateLintPass<'tcx>>(tcx: TyCtxt<'tcx>, builtin_lints: T) {
+fn late_lint_crate<'tcx, T: LateLintPass<'tcx> + 'tcx>(tcx: TyCtxt<'tcx>, builtin_lints: T) {
     let mut passes =
         unerased_lint_store(tcx).late_passes.iter().map(|p| (p)(tcx)).collect::<Vec<_>>();
+    passes.push(Box::new(builtin_lints));
 
-    if !passes.is_empty() {
-        late_lint_pass_crate(tcx, LateLintPassObjects { lints: &mut passes[..] });
-    }
-
-    late_lint_pass_crate(tcx, builtin_lints);
+    late_lint_pass_crate(tcx, LateLintPassObjects { lints: &mut passes[..] });
 }
 
 /// Performs lint checking on a crate.
-pub fn check_crate<'tcx, T: LateLintPass<'tcx>>(
+pub fn check_crate<'tcx, T: LateLintPass<'tcx> + 'tcx>(
     tcx: TyCtxt<'tcx>,
     builtin_lints: impl FnOnce() -> T + Send,
 ) {