From 1b82084a5f28506134c668a67d2759ef22be6a80 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 8 Jan 2019 20:31:43 +0300 Subject: dont depend on ra_editor directly --- crates/ra_analysis/src/lib.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 771a349c8..a3b350ad7 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -40,7 +40,10 @@ pub use crate::{ completion::{CompletionItem, CompletionItemKind, InsertText}, runnables::{Runnable, RunnableKind}, }; -pub use ra_editor::{Fold, FoldKind, HighlightedRange, LineIndex, Severity, StructureNode}; +pub use ra_editor::{ + Fold, FoldKind, HighlightedRange, Severity, StructureNode, + LineIndex, LineCol, translate_offset_with_edit, +}; pub use ra_db::{ Cancelable, Canceled, CrateGraph, CrateId, FileId, FilePosition, FileRange, FilesDatabase, -- cgit v1.2.3 From 702bdacb03b498f36ed9ccf4f37ca923affb1e9c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 8 Jan 2019 20:44:31 +0300 Subject: move node at offset to aglo already --- crates/ra_analysis/src/call_info.rs | 2 +- crates/ra_analysis/src/completion/completion_context.rs | 3 +-- crates/ra_analysis/src/goto_defenition.rs | 7 ++++--- crates/ra_analysis/src/hover.rs | 3 +-- crates/ra_analysis/src/imp.rs | 3 ++- 5 files changed, 9 insertions(+), 9 deletions(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/call_info.rs b/crates/ra_analysis/src/call_info.rs index 1dac95584..27b760780 100644 --- a/crates/ra_analysis/src/call_info.rs +++ b/crates/ra_analysis/src/call_info.rs @@ -5,8 +5,8 @@ use ra_syntax::{ AstNode, SyntaxNode, TextUnit, TextRange, SyntaxKind::FN_DEF, ast::{self, ArgListOwner, DocCommentsOwner}, + algo::find_node_at_offset, }; -use ra_editor::find_node_at_offset; use crate::{FilePosition, CallInfo, db::RootDatabase}; diff --git a/crates/ra_analysis/src/completion/completion_context.rs b/crates/ra_analysis/src/completion/completion_context.rs index 988c21c58..01786bb69 100644 --- a/crates/ra_analysis/src/completion/completion_context.rs +++ b/crates/ra_analysis/src/completion/completion_context.rs @@ -1,9 +1,8 @@ -use ra_editor::find_node_at_offset; use ra_text_edit::AtomTextEdit; use ra_syntax::{ AstNode, SyntaxNode, SourceFile, TextUnit, TextRange, ast, - algo::{find_leaf_at_offset, find_covering_node}, + algo::{find_leaf_at_offset, find_covering_node, find_node_at_offset}, SyntaxKind::*, }; use hir::source_binder; diff --git a/crates/ra_analysis/src/goto_defenition.rs b/crates/ra_analysis/src/goto_defenition.rs index 0bcf13ebd..fcd8d315e 100644 --- a/crates/ra_analysis/src/goto_defenition.rs +++ b/crates/ra_analysis/src/goto_defenition.rs @@ -1,7 +1,8 @@ use ra_db::{FileId, Cancelable, SyntaxDatabase}; -use ra_syntax::{TextRange, AstNode, ast, SyntaxKind::{NAME, MODULE}}; - -use ra_editor::find_node_at_offset; +use ra_syntax::{ + TextRange, AstNode, ast, SyntaxKind::{NAME, MODULE}, + algo::find_node_at_offset, +}; use crate::{FilePosition, NavigationTarget, db::RootDatabase}; diff --git a/crates/ra_analysis/src/hover.rs b/crates/ra_analysis/src/hover.rs index 5607c3ef3..475524ee1 100644 --- a/crates/ra_analysis/src/hover.rs +++ b/crates/ra_analysis/src/hover.rs @@ -1,9 +1,8 @@ use ra_db::{Cancelable, SyntaxDatabase}; -use ra_editor::find_node_at_offset; use ra_syntax::{ AstNode, SyntaxNode, TreePtr, ast::{self, NameOwner}, - algo::{find_covering_node, find_leaf_at_offset, visit::{visitor, Visitor}}, + algo::{find_covering_node, find_node_at_offset, find_leaf_at_offset, visit::{visitor, Visitor}}, }; use crate::{db::RootDatabase, RangeInfo, FilePosition, FileRange, NavigationTarget}; diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index b3f75fdbe..2b9963b3c 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs @@ -6,10 +6,11 @@ use hir::{ self, Problem, source_binder, }; use ra_db::{FilesDatabase, SourceRoot, SourceRootId, SyntaxDatabase}; -use ra_editor::{self, find_node_at_offset, assists, LocalEdit, Severity}; +use ra_editor::{self, assists, LocalEdit, Severity}; use ra_syntax::{ TextRange, AstNode, SourceFile, ast::{self, NameOwner}, + algo::find_node_at_offset, SyntaxKind::*, }; -- cgit v1.2.3 From 695294bbb974cdbac136e260029403e90a17d953 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 8 Jan 2019 21:00:51 +0300 Subject: ra_db is independent from editor --- crates/ra_analysis/src/db.rs | 24 +++++++++++++++++++----- crates/ra_analysis/src/lib.rs | 12 +++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/db.rs b/crates/ra_analysis/src/db.rs index 1709be5cf..9d46609ec 100644 --- a/crates/ra_analysis/src/db.rs +++ b/crates/ra_analysis/src/db.rs @@ -1,10 +1,9 @@ use std::{fmt, sync::Arc}; + use salsa::{self, Database}; -use ra_db::{LocationIntener, BaseDatabase}; +use ra_db::{LocationIntener, BaseDatabase, FileId}; -use crate::{ - symbol_index, -}; +use crate::{symbol_index, LineIndex}; #[derive(Debug)] pub(crate) struct RootDatabase { @@ -71,6 +70,19 @@ impl AsRef> for RootDatabas } } +salsa::query_group! { + pub(crate) trait LineIndexDatabase: ra_db::FilesDatabase + BaseDatabase { + fn line_index(file_id: FileId) -> Arc { + type LineIndexQuery; + } + } +} + +fn line_index(db: &impl ra_db::FilesDatabase, file_id: FileId) -> Arc { + let text = db.file_text(file_id); + Arc::new(LineIndex::new(&*text)) +} + salsa::database_storage! { pub(crate) struct RootDatabaseStorage for RootDatabase { impl ra_db::FilesDatabase { @@ -84,7 +96,9 @@ salsa::database_storage! { } impl ra_db::SyntaxDatabase { fn source_file() for ra_db::SourceFileQuery; - fn file_lines() for ra_db::FileLinesQuery; + } + impl LineIndexDatabase { + fn line_index() for LineIndexQuery; } impl symbol_index::SymbolsDatabase { fn file_symbols() for symbol_index::FileSymbolsQuery; diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index a3b350ad7..48df08416 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -29,12 +29,16 @@ use std::{fmt, sync::Arc}; use ra_syntax::{SmolStr, SourceFile, TreePtr, SyntaxKind, TextRange, TextUnit}; use ra_text_edit::TextEdit; +use ra_db::{SyntaxDatabase, FilesDatabase, LocalSyntaxPtr}; use rayon::prelude::*; use relative_path::RelativePathBuf; use rustc_hash::FxHashMap; use salsa::ParallelDatabase; -use crate::symbol_index::{FileSymbol, SymbolIndex}; +use crate::{ + symbol_index::{FileSymbol, SymbolIndex}, + db::LineIndexDatabase, +}; pub use crate::{ completion::{CompletionItem, CompletionItemKind, InsertText}, @@ -44,10 +48,8 @@ pub use ra_editor::{ Fold, FoldKind, HighlightedRange, Severity, StructureNode, LineIndex, LineCol, translate_offset_with_edit, }; - pub use ra_db::{ - Cancelable, Canceled, CrateGraph, CrateId, FileId, FilePosition, FileRange, FilesDatabase, - LocalSyntaxPtr, SourceRootId, SyntaxDatabase, + Cancelable, Canceled, CrateGraph, CrateId, FileId, FilePosition, FileRange, SourceRootId }; #[derive(Default)] @@ -325,7 +327,7 @@ impl Analysis { /// Gets the file's `LineIndex`: data structure to convert between absolute /// offsets and line/column representation. pub fn file_line_index(&self, file_id: FileId) -> Arc { - self.db.file_lines(file_id) + self.db.line_index(file_id) } /// Selects the next syntactic nodes encopasing the range. pub fn extend_selection(&self, frange: FileRange) -> TextRange { -- cgit v1.2.3