aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-11-20 18:12:15 +0000
committerAleksey Kladov <[email protected]>2018-11-20 18:12:15 +0000
commitc54b51fdedd21b0367af7cb3fac3bc16d21b8cc1 (patch)
treec94c79064646c5c757a387fcafcb87e8360673e8
parent8086107b6ac8555a226ceb294e2c633dfe36c6e1 (diff)
add DefId
-rw-r--r--crates/ra_analysis/src/descriptors/module/nameres.rs15
-rw-r--r--crates/ra_analysis/src/loc2id.rs18
2 files changed, 32 insertions, 1 deletions
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::{
7}; 7};
8 8
9use crate::{ 9use crate::{
10 loc2id::DefId,
10 descriptors::module::ModuleId, 11 descriptors::module::ModuleId,
11 syntax_ptr::LocalSyntaxPtr, 12 syntax_ptr::LocalSyntaxPtr,
12}; 13};
@@ -45,7 +46,8 @@ struct ItemMap {
45 46
46#[derive(Debug)] 47#[derive(Debug)]
47struct ModuleItems { 48struct ModuleItems {
48 items: FxHashMap<SmolStr, PerNs<ModuleItem>>, 49 items: FxHashMap<SmolStr, PerNs<DefId>>,
50 import_resolutions: FxHashMap<LocalSyntaxPtr, DefId>,
49} 51}
50 52
51#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] 53#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
@@ -197,3 +199,14 @@ impl ModuleItem {
197 Some(res) 199 Some(res)
198 } 200 }
199} 201}
202
203struct Resolver {
204 input: FxHashMap<ModuleId, InputModuleItems>,
205 result: ModuleItems,
206}
207
208impl Resolver {
209 fn resolve(&mut self){
210
211 }
212}
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::{
8use rustc_hash::FxHashMap; 8use rustc_hash::FxHashMap;
9 9
10use crate::{ 10use crate::{
11 descriptors::module::ModuleId,
11 syntax_ptr::SyntaxPtr, 12 syntax_ptr::SyntaxPtr,
13 input::SourceRootId,
12}; 14};
13 15
14/// There are two principle ways to refer to things: 16/// There are two principle ways to refer to things:
@@ -89,6 +91,21 @@ macro_rules! impl_numeric_id {
89pub(crate) struct FnId(u32); 91pub(crate) struct FnId(u32);
90impl_numeric_id!(FnId); 92impl_numeric_id!(FnId);
91 93
94#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
95pub(crate) struct DefId(u32);
96impl_numeric_id!(DefId);
97
98#[derive(Clone, Debug, PartialEq, Eq, Hash)]
99enum DefLoc {
100 Module {
101 id: ModuleId,
102 source_root: SourceRootId,
103 },
104 Item {
105 ptr: SyntaxPtr,
106 }
107}
108
92pub(crate) trait IdDatabase: salsa::Database { 109pub(crate) trait IdDatabase: salsa::Database {
93 fn id_maps(&self) -> &IdMaps; 110 fn id_maps(&self) -> &IdMaps;
94} 111}
@@ -110,4 +127,5 @@ impl IdMaps {
110#[derive(Debug, Default)] 127#[derive(Debug, Default)]
111struct IdMapsInner { 128struct IdMapsInner {
112 fns: Mutex<Loc2IdMap<SyntaxPtr, FnId>>, 129 fns: Mutex<Loc2IdMap<SyntaxPtr, FnId>>,
130 defs: Mutex<Loc2IdMap<DefLoc, DefId>>,
113} 131}