about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2024-02-23 11:07:01 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2024-03-07 12:42:49 +0000
commitde3fb8d429a15891deda4640d421bf223cd5843b (patch)
tree3db71533a388e0dcf78b5fad50cd7508a0c7b496 /compiler/rustc_hir_analysis/src
parent8c9a75b3238b66592779d6b240dbf78eacefebb8 (diff)
downloadrust-de3fb8d429a15891deda4640d421bf223cd5843b.tar.gz
rust-de3fb8d429a15891deda4640d421bf223cd5843b.zip
Collect mod item types in parallel, just like wfcheck
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
-rw-r--r--compiler/rustc_hir_analysis/src/collect.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs
index 2cc37651ef5..73138340d78 100644
--- a/compiler/rustc_hir_analysis/src/collect.rs
+++ b/compiler/rustc_hir_analysis/src/collect.rs
@@ -55,7 +55,18 @@ mod type_of;
 // Main entry point
 
 fn collect_mod_item_types(tcx: TyCtxt<'_>, module_def_id: LocalModDefId) {
-    tcx.hir().visit_item_likes_in_module(module_def_id, &mut CollectItemTypesVisitor { tcx });
+    let items = tcx.hir_module_items(module_def_id);
+    let hir = tcx.hir();
+    let _ = items.par_items(|item| Ok(CollectItemTypesVisitor { tcx }.visit_item(hir.item(item))));
+    let _ = items.par_trait_items(|item| {
+        Ok(CollectItemTypesVisitor { tcx }.visit_trait_item(hir.trait_item(item)))
+    });
+    let _ = items.par_impl_items(|item| {
+        Ok(CollectItemTypesVisitor { tcx }.visit_impl_item(hir.impl_item(item)))
+    });
+    let _ = items.par_foreign_items(|item| {
+        Ok(CollectItemTypesVisitor { tcx }.visit_foreign_item(hir.foreign_item(item)))
+    });
 }
 
 pub fn provide(providers: &mut Providers) {