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 { if tree_sink.roots.len() != 1 {
return Err(ExpandError::ConversionError); return Err(ExpandError::ConversionError);
} }
//FIXME: would be cool to report errors
Ok(tree_sink.inner.finish()) let (tree, _errors) = tree_sink.inner.finish();
Ok(tree)
} }
/// Parses the token tree (result of macro expansion) to an expression /// Parses the token tree (result of macro expansion) to an expression

View File

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