diff options
Diffstat (limited to 'crates/ra_analysis/src/syntax_ptr.rs')
-rw-r--r-- | crates/ra_analysis/src/syntax_ptr.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/ra_analysis/src/syntax_ptr.rs b/crates/ra_analysis/src/syntax_ptr.rs index adbff4806..c3c904633 100644 --- a/crates/ra_analysis/src/syntax_ptr.rs +++ b/crates/ra_analysis/src/syntax_ptr.rs | |||
@@ -12,6 +12,7 @@ salsa::query_group! { | |||
12 | pub(crate) trait SyntaxPtrDatabase: SyntaxDatabase { | 12 | pub(crate) trait SyntaxPtrDatabase: SyntaxDatabase { |
13 | fn resolve_syntax_ptr(ptr: SyntaxPtr) -> SyntaxNode { | 13 | fn resolve_syntax_ptr(ptr: SyntaxPtr) -> SyntaxNode { |
14 | type ResolveSyntaxPtrQuery; | 14 | type ResolveSyntaxPtrQuery; |
15 | // Don't retain syntax trees in memory | ||
15 | storage volatile; | 16 | storage volatile; |
16 | } | 17 | } |
17 | } | 18 | } |
@@ -23,7 +24,7 @@ fn resolve_syntax_ptr(db: &impl SyntaxDatabase, ptr: SyntaxPtr) -> SyntaxNode { | |||
23 | } | 24 | } |
24 | 25 | ||
25 | /// SyntaxPtr is a cheap `Copy` id which identifies a particular syntax node, | 26 | /// SyntaxPtr is a cheap `Copy` id which identifies a particular syntax node, |
26 | /// without retainig syntax tree in memory. You need to explicitelly `resovle` | 27 | /// without retaining syntax tree in memory. You need to explicitly `resolve` |
27 | /// `SyntaxPtr` to get a `SyntaxNode` | 28 | /// `SyntaxPtr` to get a `SyntaxNode` |
28 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 29 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
29 | pub(crate) struct SyntaxPtr { | 30 | pub(crate) struct SyntaxPtr { |
@@ -80,9 +81,13 @@ impl LocalSyntaxPtr { | |||
80 | } | 81 | } |
81 | curr = curr.children() | 82 | curr = curr.children() |
82 | .find(|it| self.range.is_subrange(&it.range())) | 83 | .find(|it| self.range.is_subrange(&it.range())) |
83 | .unwrap_or_else(|| panic!("can't resovle local ptr to SyntaxNode: {:?}", self)) | 84 | .unwrap_or_else(|| panic!("can't resolve local ptr to SyntaxNode: {:?}", self)) |
84 | } | 85 | } |
85 | } | 86 | } |
87 | |||
88 | pub(crate) fn into_global(self, file_id: FileId) -> SyntaxPtr { | ||
89 | SyntaxPtr { file_id, local: self} | ||
90 | } | ||
86 | } | 91 | } |
87 | 92 | ||
88 | 93 | ||