return errors from tree builder

This commit is contained in:
Aleksey Kladov 2019-05-05 11:34:39 +03:00
parent 90926b9479
commit 1cece9f219
2 changed files with 6 additions and 5 deletions

View File

@ -56,8 +56,9 @@ where
if tree_sink.roots.len() != 1 {
return Err(ExpandError::ConversionError);
}
Ok(tree_sink.inner.finish())
//FIXME: would be cool to report errors
let (tree, _errors) = tree_sink.inner.finish();
Ok(tree)
}
/// Parses the token tree (result of macro expansion) to an expression

View File

@ -626,13 +626,13 @@ impl SyntaxTreeBuilder {
(green, self.errors)
}
pub fn finish(self) -> TreeArc<SyntaxNode> {
let (green, _errors) = self.finish_raw();
pub fn finish(self) -> (TreeArc<SyntaxNode>, Vec<SyntaxError>) {
let (green, errors) = self.finish_raw();
let node = SyntaxNode::new(green);
if cfg!(debug_assertions) {
crate::validation::validate_block_structure(&node);
}
node
(node, errors)
}
pub fn token(&mut self, kind: SyntaxKind, text: SmolStr) {