From a1c187eef3ba08076aedb5154929f7eda8d1b424 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 12 Aug 2020 18:26:51 +0200 Subject: Rename ra_syntax -> syntax --- crates/ra_syntax/src/syntax_node.rs | 77 ------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 crates/ra_syntax/src/syntax_node.rs (limited to 'crates/ra_syntax/src/syntax_node.rs') diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs deleted file mode 100644 index b2abcbfbb..000000000 --- a/crates/ra_syntax/src/syntax_node.rs +++ /dev/null @@ -1,77 +0,0 @@ -//! This module defines Concrete Syntax Tree (CST), used by rust-analyzer. -//! -//! The CST includes comments and whitespace, provides a single node type, -//! `SyntaxNode`, and a basic traversal API (parent, children, siblings). -//! -//! The *real* implementation is in the (language-agnostic) `rowan` crate, this -//! module just wraps its API. - -use rowan::{GreenNodeBuilder, Language}; - -use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextSize}; - -pub use rowan::GreenNode; - -pub(crate) use rowan::GreenToken; - -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum RustLanguage {} -impl Language for RustLanguage { - type Kind = SyntaxKind; - - fn kind_from_raw(raw: rowan::SyntaxKind) -> SyntaxKind { - SyntaxKind::from(raw.0) - } - - fn kind_to_raw(kind: SyntaxKind) -> rowan::SyntaxKind { - rowan::SyntaxKind(kind.into()) - } -} - -pub type SyntaxNode = rowan::SyntaxNode; -pub type SyntaxToken = rowan::SyntaxToken; -pub type SyntaxElement = rowan::SyntaxElement; -pub type SyntaxNodeChildren = rowan::SyntaxNodeChildren; -pub type SyntaxElementChildren = rowan::SyntaxElementChildren; - -pub use rowan::{Direction, NodeOrToken}; - -#[derive(Default)] -pub struct SyntaxTreeBuilder { - errors: Vec, - inner: GreenNodeBuilder<'static>, -} - -impl SyntaxTreeBuilder { - pub(crate) fn finish_raw(self) -> (GreenNode, Vec) { - let green = self.inner.finish(); - (green, self.errors) - } - - pub fn finish(self) -> Parse { - let (green, errors) = self.finish_raw(); - if cfg!(debug_assertions) { - let node = SyntaxNode::new_root(green.clone()); - crate::validation::validate_block_structure(&node); - } - Parse::new(green, errors) - } - - pub fn token(&mut self, kind: SyntaxKind, text: SmolStr) { - let kind = RustLanguage::kind_to_raw(kind); - self.inner.token(kind, text) - } - - pub fn start_node(&mut self, kind: SyntaxKind) { - let kind = RustLanguage::kind_to_raw(kind); - self.inner.start_node(kind) - } - - pub fn finish_node(&mut self) { - self.inner.finish_node() - } - - pub fn error(&mut self, error: parser::ParseError, text_pos: TextSize) { - self.errors.push(SyntaxError::new_at_offset(*error.0, text_pos)) - } -} -- cgit v1.2.3