From 4e91c23c796988e3934afabf619185333f85c116 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 12 Feb 2019 18:41:57 +0300 Subject: rename yellow -> syntax_node why yellow in the first place? Its red + green. --- crates/ra_syntax/src/syntax_node/builder.rs | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 crates/ra_syntax/src/syntax_node/builder.rs (limited to 'crates/ra_syntax/src/syntax_node/builder.rs') diff --git a/crates/ra_syntax/src/syntax_node/builder.rs b/crates/ra_syntax/src/syntax_node/builder.rs new file mode 100644 index 000000000..8abd0f051 --- /dev/null +++ b/crates/ra_syntax/src/syntax_node/builder.rs @@ -0,0 +1,41 @@ +use crate::{ + parser_impl::Sink, + syntax_node::{GreenNode, RaTypes, SyntaxError}, + SmolStr, SyntaxKind, +}; +use rowan::GreenNodeBuilder; + +pub(crate) struct GreenBuilder { + errors: Vec, + inner: GreenNodeBuilder, +} + +impl GreenBuilder { + pub(crate) fn new() -> GreenBuilder { + GreenBuilder { errors: Vec::new(), inner: GreenNodeBuilder::new() } + } +} + +impl Sink for GreenBuilder { + type Tree = (GreenNode, Vec); + + fn leaf(&mut self, kind: SyntaxKind, text: SmolStr) { + self.inner.leaf(kind, text); + } + + fn start_branch(&mut self, kind: SyntaxKind) { + self.inner.start_internal(kind) + } + + fn finish_branch(&mut self) { + self.inner.finish_internal(); + } + + fn error(&mut self, error: SyntaxError) { + self.errors.push(error) + } + + fn finish(self) -> (GreenNode, Vec) { + (self.inner.finish(), self.errors) + } +} -- cgit v1.2.3