From c54b51fdedd21b0367af7cb3fac3bc16d21b8cc1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 20 Nov 2018 21:12:15 +0300 Subject: add DefId --- crates/ra_analysis/src/descriptors/module/nameres.rs | 15 ++++++++++++++- crates/ra_analysis/src/loc2id.rs | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/descriptors/module/nameres.rs b/crates/ra_analysis/src/descriptors/module/nameres.rs index b65b6adb7..8002656d6 100644 --- a/crates/ra_analysis/src/descriptors/module/nameres.rs +++ b/crates/ra_analysis/src/descriptors/module/nameres.rs @@ -7,6 +7,7 @@ use ra_syntax::{ }; use crate::{ + loc2id::DefId, descriptors::module::ModuleId, syntax_ptr::LocalSyntaxPtr, }; @@ -45,7 +46,8 @@ struct ItemMap { #[derive(Debug)] struct ModuleItems { - items: FxHashMap>, + items: FxHashMap>, + import_resolutions: FxHashMap, } #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -197,3 +199,14 @@ impl ModuleItem { Some(res) } } + +struct Resolver { + input: FxHashMap, + result: ModuleItems, +} + +impl Resolver { + fn resolve(&mut self){ + + } +} diff --git a/crates/ra_analysis/src/loc2id.rs b/crates/ra_analysis/src/loc2id.rs index 8c297156a..87417df94 100644 --- a/crates/ra_analysis/src/loc2id.rs +++ b/crates/ra_analysis/src/loc2id.rs @@ -8,7 +8,9 @@ use std::{ use rustc_hash::FxHashMap; use crate::{ + descriptors::module::ModuleId, syntax_ptr::SyntaxPtr, + input::SourceRootId, }; /// There are two principle ways to refer to things: @@ -89,6 +91,21 @@ macro_rules! impl_numeric_id { pub(crate) struct FnId(u32); impl_numeric_id!(FnId); +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub(crate) struct DefId(u32); +impl_numeric_id!(DefId); + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +enum DefLoc { + Module { + id: ModuleId, + source_root: SourceRootId, + }, + Item { + ptr: SyntaxPtr, + } +} + pub(crate) trait IdDatabase: salsa::Database { fn id_maps(&self) -> &IdMaps; } @@ -110,4 +127,5 @@ impl IdMaps { #[derive(Debug, Default)] struct IdMapsInner { fns: Mutex>, + defs: Mutex>, } -- cgit v1.2.3