diff options
author | Aleksey Kladov <[email protected]> | 2018-11-27 11:11:36 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-11-27 12:02:06 +0000 |
commit | 10f4d4b74cd7e072bf5e8d3fb57c76f35ea03e1d (patch) | |
tree | ec9c94fa1bf857032b3914175d03fd179f74c660 /crates/ra_analysis/src/descriptors/mod.rs | |
parent | 4d87799a4a73e5a58fce4e3caa88ad90347bdabb (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.rs | 5 |
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 | ||
23 | pub(crate) use self::path::{Path, PathKind}; | 23 | pub(crate) use self::path::{Path, PathKind}; |
24 | pub(crate) use self::module::nameres::FileItemId; | ||
24 | 25 | ||
25 | salsa::query_group! { | 26 | salsa::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; |