From df33e7685bdb0f63bf6aa809b9046708d563a1a7 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 18 Jul 2019 23:19:04 +0300 Subject: use Parse in mbe --- crates/ra_syntax/src/lib.rs | 12 +++++++++--- crates/ra_syntax/src/syntax_node.rs | 7 ++++--- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'crates/ra_syntax/src') diff --git a/crates/ra_syntax/src/lib.rs b/crates/ra_syntax/src/lib.rs index 2eb3fcd57..534c206a6 100644 --- a/crates/ra_syntax/src/lib.rs +++ b/crates/ra_syntax/src/lib.rs @@ -35,7 +35,7 @@ use std::{fmt::Write, sync::Arc}; use ra_text_edit::AtomTextEdit; -use crate::syntax_node::{GreenNode, SyntaxNodeWrapper}; +use crate::syntax_node::GreenNode; pub use crate::{ ast::{AstNode, AstToken}, @@ -43,8 +43,8 @@ pub use crate::{ ptr::{AstPtr, SyntaxNodePtr}, syntax_error::{Location, SyntaxError, SyntaxErrorKind}, syntax_node::{ - Direction, InsertPosition, SyntaxElement, SyntaxNode, SyntaxToken, SyntaxTreeBuilder, - TreeArc, WalkEvent, + Direction, InsertPosition, SyntaxElement, SyntaxNode, SyntaxNodeWrapper, SyntaxToken, + SyntaxTreeBuilder, TreeArc, WalkEvent, }, syntax_text::SyntaxText, }; @@ -91,6 +91,12 @@ impl Parse { } } +impl Parse { + pub fn to_syntax(this: Self) -> Parse { + Parse { tree: this.tree().syntax().to_owned(), errors: this.errors } + } +} + impl Parse { pub fn debug_dump(&self) -> String { let mut buf = self.tree.syntax().debug_dump(); diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs index a1f9a59b6..e57813a94 100644 --- a/crates/ra_syntax/src/syntax_node.rs +++ b/crates/ra_syntax/src/syntax_node.rs @@ -18,7 +18,8 @@ use rowan::{GreenNodeBuilder, TransparentNewType}; use crate::{ syntax_error::{SyntaxError, SyntaxErrorKind}, - AstNode, SmolStr, SourceFile, SyntaxKind, SyntaxNodePtr, SyntaxText, TextRange, TextUnit, + AstNode, Parse, SmolStr, SourceFile, SyntaxKind, SyntaxNodePtr, SyntaxText, TextRange, + TextUnit, }; pub use rowan::WalkEvent; @@ -594,13 +595,13 @@ impl SyntaxTreeBuilder { (green, self.errors) } - pub fn finish(self) -> (TreeArc, Vec) { + pub fn finish(self) -> Parse { let (green, errors) = self.finish_raw(); let node = SyntaxNode::new(green); if cfg!(debug_assertions) { crate::validation::validate_block_structure(&node); } - (node, errors) + Parse::new(node, errors) } pub fn token(&mut self, kind: SyntaxKind, text: SmolStr) { -- cgit v1.2.3