Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/lib.rs')
-rw-r--r--crates/hir-def/src/lib.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs
index 88d4572196..ca8cc1c3ea 100644
--- a/crates/hir-def/src/lib.rs
+++ b/crates/hir-def/src/lib.rs
@@ -106,6 +106,9 @@ use crate::{
},
};
+type FxIndexMap<K, V> =
+ indexmap::IndexMap<K, V, std::hash::BuildHasherDefault<rustc_hash::FxHasher>>;
+
#[derive(Debug)]
pub struct ItemLoc<N: ItemTreeNode> {
pub container: ModuleId,
@@ -455,6 +458,26 @@ impl ModuleId {
pub fn is_block_module(self) -> bool {
self.block.is_some() && self.local_id == DefMap::ROOT
}
+
+ pub fn is_within_block(self) -> bool {
+ self.block.is_some()
+ }
+
+ pub fn as_crate_root(&self) -> Option<CrateRootModuleId> {
+ if self.local_id == DefMap::ROOT && self.block.is_none() {
+ Some(CrateRootModuleId { krate: self.krate })
+ } else {
+ None
+ }
+ }
+
+ pub fn derive_crate_root(&self) -> CrateRootModuleId {
+ CrateRootModuleId { krate: self.krate }
+ }
+
+ fn is_crate_root(&self) -> bool {
+ self.local_id == DefMap::ROOT && self.block.is_none()
+ }
}
impl PartialEq<CrateRootModuleId> for ModuleId {