From 9fae494a8da347a32cdcd3dcd714ba00aaff9664 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 25 Aug 2018 11:40:17 +0300 Subject: Move ParsedFile to top --- crates/libanalysis/src/lib.rs | 3 ++- crates/libanalysis/src/module_map.rs | 3 ++- crates/libeditor/src/code_actions.rs | 3 ++- crates/libeditor/src/lib.rs | 17 ++++++++--------- crates/libeditor/src/typing.rs | 4 ++-- crates/libsyntax2/src/ast/mod.rs | 25 +------------------------ crates/libsyntax2/src/lib.rs | 23 ++++++++++++++++++++++- 7 files changed, 39 insertions(+), 39 deletions(-) (limited to 'crates') diff --git a/crates/libanalysis/src/lib.rs b/crates/libanalysis/src/lib.rs index fee0d10d6..a0f17a689 100644 --- a/crates/libanalysis/src/lib.rs +++ b/crates/libanalysis/src/lib.rs @@ -27,8 +27,9 @@ use std::{ }; use libsyntax2::{ + ParsedFile, TextUnit, TextRange, SmolStr, - ast::{self, AstNode, NameOwner, ParsedFile}, + ast::{self, AstNode, NameOwner}, SyntaxKind::*, }; use libeditor::{LineIndex, FileSymbol, find_node}; diff --git a/crates/libanalysis/src/module_map.rs b/crates/libanalysis/src/module_map.rs index 83e6e57f7..e8d32928a 100644 --- a/crates/libanalysis/src/module_map.rs +++ b/crates/libanalysis/src/module_map.rs @@ -4,7 +4,8 @@ use std::{ use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard}; use libsyntax2::{ - ast::{self, AstNode, NameOwner, ParsedFile}, + ParsedFile, + ast::{self, AstNode, NameOwner}, SyntaxNode, SmolStr, }; use {FileId, FileResolver}; diff --git a/crates/libeditor/src/code_actions.rs b/crates/libeditor/src/code_actions.rs index c25ee973c..c7c043b39 100644 --- a/crates/libeditor/src/code_actions.rs +++ b/crates/libeditor/src/code_actions.rs @@ -3,7 +3,8 @@ use std::{ }; use libsyntax2::{ - ast::{self, AstNode, AttrsOwner, TypeParamsOwner, NameOwner, ParsedFile}, + ParsedFile, + ast::{self, AstNode, AttrsOwner, TypeParamsOwner, NameOwner}, SyntaxKind::COMMA, SyntaxNodeRef, algo::{ diff --git a/crates/libeditor/src/lib.rs b/crates/libeditor/src/lib.rs index b29603da3..b2d1dab58 100644 --- a/crates/libeditor/src/lib.rs +++ b/crates/libeditor/src/lib.rs @@ -10,8 +10,7 @@ mod code_actions; mod typing; use libsyntax2::{ - ast::{self, NameOwner}, - AstNode, + ast::{self, AstNode, NameOwner}, algo::{walk, find_leaf_at_offset}, SyntaxKind::{self, *}, }; @@ -52,11 +51,11 @@ pub enum RunnableKind { Bin, } -pub fn parse(text: &str) -> ast::ParsedFile { - ast::ParsedFile::parse(text) +pub fn parse(text: &str) -> ParsedFile { + ParsedFile::parse(text) } -pub fn matching_brace(file: &ast::ParsedFile, offset: TextUnit) -> Option { +pub fn matching_brace(file: &ParsedFile, offset: TextUnit) -> Option { const BRACES: &[SyntaxKind] = &[ L_CURLY, R_CURLY, L_BRACK, R_BRACK, @@ -76,7 +75,7 @@ pub fn matching_brace(file: &ast::ParsedFile, offset: TextUnit) -> Option Vec { +pub fn highlight(file: &ParsedFile) -> Vec { let mut res = Vec::new(); for node in walk::preorder(file.syntax()) { let tag = match node.kind() { @@ -99,7 +98,7 @@ pub fn highlight(file: &ast::ParsedFile) -> Vec { res } -pub fn diagnostics(file: &ast::ParsedFile) -> Vec { +pub fn diagnostics(file: &ParsedFile) -> Vec { let mut res = Vec::new(); for node in walk::preorder(file.syntax()) { @@ -117,11 +116,11 @@ pub fn diagnostics(file: &ast::ParsedFile) -> Vec { res } -pub fn syntax_tree(file: &ast::ParsedFile) -> String { +pub fn syntax_tree(file: &ParsedFile) -> String { ::libsyntax2::utils::dump_tree(file.syntax()) } -pub fn runnables(file: &ast::ParsedFile) -> Vec { +pub fn runnables(file: &ParsedFile) -> Vec { file.ast() .functions() .filter_map(|f| { diff --git a/crates/libeditor/src/typing.rs b/crates/libeditor/src/typing.rs index cc0d3d272..8903af177 100644 --- a/crates/libeditor/src/typing.rs +++ b/crates/libeditor/src/typing.rs @@ -1,5 +1,5 @@ use libsyntax2::{ - TextUnit, TextRange, SyntaxNodeRef, + TextUnit, TextRange, SyntaxNodeRef, ParsedFile, ast, algo::{ walk::preorder, @@ -11,7 +11,7 @@ use libsyntax2::{ use {ActionResult, EditBuilder}; -pub fn join_lines(file: &ast::ParsedFile, range: TextRange) -> ActionResult { +pub fn join_lines(file: &ParsedFile, range: TextRange) -> ActionResult { let range = if range.is_empty() { let text = file.syntax().text(); let text = &text[TextRange::from_to(range.start(), TextUnit::of_str(&text))]; diff --git a/crates/libsyntax2/src/ast/mod.rs b/crates/libsyntax2/src/ast/mod.rs index ba80fc64e..6217c5b74 100644 --- a/crates/libsyntax2/src/ast/mod.rs +++ b/crates/libsyntax2/src/ast/mod.rs @@ -4,8 +4,7 @@ use itertools::Itertools; use smol_str::SmolStr; use { - SyntaxNode, SyntaxNodeRef, TreeRoot, SyntaxError, - SyntaxKind::*, + SyntaxNodeRef, SyntaxKind::*, }; pub use self::generated::*; @@ -37,28 +36,6 @@ pub trait AttrsOwner<'a>: AstNode<'a> { } } -#[derive(Clone, Debug)] -pub struct ParsedFile { - root: SyntaxNode -} - -impl ParsedFile { - pub fn parse(text: &str) -> Self { - let root = ::parse(text); - ParsedFile { root } - } - pub fn ast(&self) -> File { - File::cast(self.syntax()).unwrap() - } - pub fn syntax(&self) -> SyntaxNodeRef { - self.root.borrowed() - } - pub fn errors(&self) -> Vec { - self.syntax().root.syntax_root().errors.clone() - } - -} - impl<'a> FnDef<'a> { pub fn has_atom_attr(&self, atom: &str) -> bool { self.attrs() diff --git a/crates/libsyntax2/src/lib.rs b/crates/libsyntax2/src/lib.rs index 9f9f3ab3a..b3efe2a18 100644 --- a/crates/libsyntax2/src/lib.rs +++ b/crates/libsyntax2/src/lib.rs @@ -44,12 +44,33 @@ pub mod text_utils; pub use { text_unit::{TextRange, TextUnit}, smol_str::SmolStr, - ast::{AstNode, ParsedFile}, + ast::AstNode, lexer::{tokenize, Token}, syntax_kinds::SyntaxKind, yellow::{SyntaxNode, SyntaxNodeRef, OwnedRoot, RefRoot, TreeRoot, SyntaxError}, }; +#[derive(Clone, Debug)] +pub struct ParsedFile { + root: SyntaxNode +} + +impl ParsedFile { + pub fn parse(text: &str) -> Self { + let root = ::parse(text); + ParsedFile { root } + } + pub fn ast(&self) -> ast::File { + ast::File::cast(self.syntax()).unwrap() + } + pub fn syntax(&self) -> SyntaxNodeRef { + self.root.borrowed() + } + pub fn errors(&self) -> Vec { + self.syntax().root.syntax_root().errors.clone() + } + +} pub fn parse(text: &str) -> SyntaxNode { let tokens = tokenize(&text); -- cgit v1.2.3