initial mod resolve

This commit is contained in:
Aleksey Kladov 2018-08-17 15:37:17 +03:00
parent 55e87e0b74
commit 081c16c776
6 changed files with 111 additions and 23 deletions

View file

@ -118,3 +118,12 @@ impl <R: TreeRoot> ImplItem<R> {
(first, second)
}
}
impl <R: TreeRoot> Module<R> {
pub fn has_semi(&self) -> bool {
match self.syntax_ref().last_child() {
None => false,
Some(node) => node.kind() == SEMI,
}
}
}

View file

@ -89,7 +89,15 @@ impl<R: TreeRoot> SyntaxNode<R> {
}
pub fn first_child(&self) -> Option<SyntaxNode<R>> {
self.children().next()
let red = self.red().get_child(0)?;
Some(SyntaxNode { root: self.root.clone(), red })
}
pub fn last_child(&self) -> Option<SyntaxNode<R>> {
let n = self.red().n_children();
let n = n.checked_sub(1)?;
let red = self.red().get_child(n)?;
Some(SyntaxNode { root: self.root.clone(), red })
}
pub fn next_sibling(&self) -> Option<SyntaxNode<R>> {