From 98a88ebb9ec46ed69dc7a3dbdc53a62ab9c1d14a Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 25 Jan 2021 19:02:05 +0100 Subject: Intern block locations and handle them in ModuleId --- crates/hir_def/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'crates/hir_def/src/lib.rs') diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs index cf09ebd3f..42b50b5b7 100644 --- a/crates/hir_def/src/lib.rs +++ b/crates/hir_def/src/lib.rs @@ -74,12 +74,16 @@ use stdx::impl_from; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct ModuleId { krate: CrateId, + block: Option, pub local_id: LocalModuleId, } impl ModuleId { pub fn def_map(&self, db: &dyn db::DefDatabase) -> Arc { - db.crate_def_map(self.krate) + match self.block { + Some(block) => db.block_def_map(block), + None => db.crate_def_map(self.krate), + } } pub fn krate(&self) -> CrateId { @@ -230,6 +234,15 @@ pub struct ImplId(salsa::InternId); type ImplLoc = ItemLoc; impl_intern!(ImplId, ImplLoc, intern_impl, lookup_intern_impl); +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Ord, PartialOrd)] +pub struct BlockId(salsa::InternId); +#[derive(Debug, Hash, PartialEq, Eq, Clone)] +pub struct BlockLoc { + ast_id: AstId, + module: ModuleId, +} +impl_intern!(BlockId, BlockLoc, intern_block, lookup_intern_block); + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct TypeParamId { pub parent: GenericDefId, -- cgit v1.2.3