aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/descriptors/mod.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-11-27 11:11:36 +0000
committerAleksey Kladov <[email protected]>2018-11-27 12:02:06 +0000
commit10f4d4b74cd7e072bf5e8d3fb57c76f35ea03e1d (patch)
treeec9c94fa1bf857032b3914175d03fd179f74c660 /crates/ra_analysis/src/descriptors/mod.rs
parent4d87799a4a73e5a58fce4e3caa88ad90347bdabb (diff)
Make nameresolution resilient to reparsing
We now store item id's instead of local syntax ptrs, and item ids don't change if you type inside a single function.
Diffstat (limited to 'crates/ra_analysis/src/descriptors/mod.rs')
-rw-r--r--crates/ra_analysis/src/descriptors/mod.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/crates/ra_analysis/src/descriptors/mod.rs b/crates/ra_analysis/src/descriptors/mod.rs
index f6b9102e7..a5e956024 100644
--- a/crates/ra_analysis/src/descriptors/mod.rs
+++ b/crates/ra_analysis/src/descriptors/mod.rs
@@ -13,7 +13,7 @@ use crate::{
13 FileId, 13 FileId,
14 db::SyntaxDatabase, 14 db::SyntaxDatabase,
15 descriptors::function::{resolve_local_name, FnId, FnScopes}, 15 descriptors::function::{resolve_local_name, FnId, FnScopes},
16 descriptors::module::{ModuleId, ModuleTree, ModuleSource, nameres::{ItemMap, InputModuleItems, FileItemId}}, 16 descriptors::module::{ModuleId, ModuleTree, ModuleSource, nameres::{ItemMap, InputModuleItems, FileItems}},
17 input::SourceRootId, 17 input::SourceRootId,
18 loc2id::IdDatabase, 18 loc2id::IdDatabase,
19 syntax_ptr::LocalSyntaxPtr, 19 syntax_ptr::LocalSyntaxPtr,
@@ -21,6 +21,7 @@ use crate::{
21}; 21};
22 22
23pub(crate) use self::path::{Path, PathKind}; 23pub(crate) use self::path::{Path, PathKind};
24pub(crate) use self::module::nameres::FileItemId;
24 25
25salsa::query_group! { 26salsa::query_group! {
26 pub(crate) trait DescriptorDatabase: SyntaxDatabase + IdDatabase { 27 pub(crate) trait DescriptorDatabase: SyntaxDatabase + IdDatabase {
@@ -29,7 +30,7 @@ salsa::query_group! {
29 use fn function::imp::fn_scopes; 30 use fn function::imp::fn_scopes;
30 } 31 }
31 32
32 fn _file_items(file_id: FileId) -> Arc<Vec<SyntaxNode>> { 33 fn _file_items(file_id: FileId) -> Arc<FileItems> {
33 type FileItemsQuery; 34 type FileItemsQuery;
34 storage volatile; 35 storage volatile;
35 use fn module::nameres::file_items; 36 use fn module::nameres::file_items;