Auto merge of #95655 - kckeiks:create-hir-crate-items-query, r=cjgillot
Refactor HIR item-like traversal (part 1) Issue #95004 - Create hir_crate_items query which traverses tcx.hir_crate(()).owners to return a hir::ModuleItems - use tcx.hir_crate_items in tcx.hir().items() to return an iterator of hir::ItemId - use tcx.hir_crate_items to introduce a tcx.hir().par_items(impl Fn(hir::ItemId)) to traverse all items in parallel; Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com> cc `@cjgillot`
This commit is contained in:
commit
edba282770
18 changed files with 435 additions and 422 deletions
|
@ -7,6 +7,7 @@
|
|||
use crate::hir;
|
||||
use crate::{Item, ItemKind, TraitItem, TraitItemKind};
|
||||
|
||||
use crate::def::DefKind;
|
||||
use std::fmt::{self, Display};
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
|
@ -130,6 +131,30 @@ impl Target {
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME: For now, should only be used with def_kinds from ItemIds
|
||||
pub fn from_def_kind(def_kind: DefKind) -> Target {
|
||||
match def_kind {
|
||||
DefKind::ExternCrate => Target::ExternCrate,
|
||||
DefKind::Use => Target::Use,
|
||||
DefKind::Static(..) => Target::Static,
|
||||
DefKind::Const => Target::Const,
|
||||
DefKind::Fn => Target::Fn,
|
||||
DefKind::Macro(..) => Target::MacroDef,
|
||||
DefKind::Mod => Target::Mod,
|
||||
DefKind::ForeignMod => Target::ForeignMod,
|
||||
DefKind::GlobalAsm => Target::GlobalAsm,
|
||||
DefKind::TyAlias => Target::TyAlias,
|
||||
DefKind::OpaqueTy => Target::OpaqueTy,
|
||||
DefKind::Enum => Target::Enum,
|
||||
DefKind::Struct => Target::Struct,
|
||||
DefKind::Union => Target::Union,
|
||||
DefKind::Trait => Target::Trait,
|
||||
DefKind::TraitAlias => Target::TraitAlias,
|
||||
DefKind::Impl => Target::Impl,
|
||||
_ => panic!("impossible case reached"),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_trait_item(trait_item: &TraitItem<'_>) -> Target {
|
||||
match trait_item.kind {
|
||||
TraitItemKind::Const(..) => Target::AssocConst,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue