Add an expr_source method analogous to the source methods in the code model

... and use that instead of exposing the source map.
This commit is contained in:
Florian Diebold 2019-08-30 20:16:28 +02:00
parent a7858bb7bf
commit f92177cfb5
8 changed files with 107 additions and 60 deletions

View file

@ -15,9 +15,8 @@ impl SyntaxNodePtr {
SyntaxNodePtr { range: node.text_range(), kind: node.kind() }
}
pub fn to_node(self, root: &SyntaxNode) -> SyntaxNode {
assert!(root.parent().is_none());
successors(Some(root.clone()), |node| {
pub fn to_node(self, parent: &SyntaxNode) -> SyntaxNode {
successors(Some(parent.clone()), |node| {
node.children().find(|it| self.range.is_subrange(&it.text_range()))
})
.find(|it| it.text_range() == self.range && it.kind() == self.kind)