aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/algo.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-08 17:47:37 +0000
committerAleksey Kladov <[email protected]>2019-01-08 18:01:41 +0000
commit0c88360eb46c44935421c5d4bc36910ce3e96782 (patch)
treed997e64093f919bee3cbaae766b3e1fa2e44096e /crates/ra_syntax/src/algo.rs
parent13301f284c63440d3354f74b51cb5a504d1e6eef (diff)
add comment
Diffstat (limited to 'crates/ra_syntax/src/algo.rs')
-rw-r--r--crates/ra_syntax/src/algo.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/algo.rs b/crates/ra_syntax/src/algo.rs
index 2826ec7f2..45747e21d 100644
--- a/crates/ra_syntax/src/algo.rs
+++ b/crates/ra_syntax/src/algo.rs
@@ -16,6 +16,15 @@ pub fn find_leaf_at_offset(node: &SyntaxNode, offset: TextUnit) -> LeafAtOffset<
16 } 16 }
17} 17}
18 18
19/// Finds a node of specific Ast type at offset. Note that this is slightly
20/// impercise: if the cursor is strictly betwen two nodes of the desired type,
21/// as in
22///
23/// ```no-run
24/// struct Foo {}|struct Bar;
25/// ```
26///
27/// then the left node will be silently prefered.
19pub fn find_node_at_offset<N: AstNode>(syntax: &SyntaxNode, offset: TextUnit) -> Option<&N> { 28pub fn find_node_at_offset<N: AstNode>(syntax: &SyntaxNode, offset: TextUnit) -> Option<&N> {
20 find_leaf_at_offset(syntax, offset).find_map(|leaf| leaf.ancestors().find_map(N::cast)) 29 find_leaf_at_offset(syntax, offset).find_map(|leaf| leaf.ancestors().find_map(N::cast))
21} 30}