aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/syntax_ptr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/syntax_ptr.rs')
-rw-r--r--crates/ra_analysis/src/syntax_ptr.rs9
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)]
29pub(crate) struct SyntaxPtr { 30pub(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