]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_metadata/src/foreign_modules.rs
Merge commit '1480cea393d0cee195e59949eabdfbcf1230f7f9' into clippyup
[rust.git] / compiler / rustc_metadata / src / foreign_modules.rs
1 use rustc_hir as hir;
2 use rustc_hir::def::DefKind;
3 use rustc_middle::ty::TyCtxt;
4 use rustc_session::cstore::ForeignModule;
5
6 pub(crate) fn collect(tcx: TyCtxt<'_>) -> Vec<ForeignModule> {
7     let mut modules = Vec::new();
8     for id in tcx.hir().items() {
9         if !matches!(tcx.def_kind(id.owner_id), DefKind::ForeignMod) {
10             continue;
11         }
12         let item = tcx.hir().item(id);
13         if let hir::ItemKind::ForeignMod { items, .. } = item.kind {
14             let foreign_items = items.iter().map(|it| it.id.owner_id.to_def_id()).collect();
15             modules.push(ForeignModule { foreign_items, def_id: id.owner_id.to_def_id() });
16         }
17     }
18     modules
19 }