From ee69fddf02b2c8d4b73f9412831f5fcc4fa931a1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 15 Oct 2018 21:56:01 +0300 Subject: Drop dead code --- crates/ra_analysis/src/db.rs | 103 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 crates/ra_analysis/src/db.rs (limited to 'crates/ra_analysis/src/db.rs') diff --git a/crates/ra_analysis/src/db.rs b/crates/ra_analysis/src/db.rs new file mode 100644 index 000000000..0773edcc1 --- /dev/null +++ b/crates/ra_analysis/src/db.rs @@ -0,0 +1,103 @@ +use std::{ + fmt, + sync::Arc, + hash::{Hash, Hasher}, +}; +use salsa; +use rustc_hash::FxHashSet; +use ra_syntax::File; +use ra_editor::{LineIndex}; +use crate::{ + symbol_index::SymbolIndex, + module_map::{ModulesDatabase, ModuleTreeQuery, ModuleDescriptorQuery}, + FileId, FileResolverImp, +}; + +#[derive(Default)] +pub(crate) struct RootDatabase { + runtime: salsa::runtime::Runtime, +} + +impl fmt::Debug for RootDatabase { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + fmt.write_str("RootDatabase { ... }") + } +} + +impl salsa::Database for RootDatabase { + fn salsa_runtime(&self) -> &salsa::runtime::Runtime { + &self.runtime + } +} + +salsa::database_storage! { + pub(crate) struct RootDatabaseStorage for RootDatabase { + impl FilesDatabase { + fn file_text() for FileTextQuery; + fn file_set() for FileSetQuery; + } + impl SyntaxDatabase { + fn file_syntax() for FileSyntaxQuery; + fn file_lines() for FileLinesQuery; + fn file_symbols() for FileSymbolsQuery; + } + impl ModulesDatabase { + fn module_tree() for ModuleTreeQuery; + fn module_descriptor() for ModuleDescriptorQuery; + } + } +} + +salsa::query_group! { + pub(crate) trait FilesDatabase: salsa::Database { + fn file_text(file_id: FileId) -> Arc { + type FileTextQuery; + storage input; + } + fn file_set(key: ()) -> Arc { + type FileSetQuery; + storage input; + } + } +} + +#[derive(Default, Debug, PartialEq, Eq)] +pub(crate) struct FileSet { + pub(crate) files: FxHashSet, + pub(crate) resolver: FileResolverImp, +} + +impl Hash for FileSet { + fn hash(&self, hasher: &mut H) { + let mut files = self.files.iter().cloned().collect::>(); + files.sort(); + files.hash(hasher); + } +} + +salsa::query_group! { + pub(crate) trait SyntaxDatabase: FilesDatabase { + fn file_syntax(file_id: FileId) -> File { + type FileSyntaxQuery; + } + fn file_lines(file_id: FileId) -> Arc { + type FileLinesQuery; + } + fn file_symbols(file_id: FileId) -> Arc { + type FileSymbolsQuery; + } + } +} + +fn file_syntax(db: &impl SyntaxDatabase, file_id: FileId) -> File { + let text = db.file_text(file_id); + File::parse(&*text) +} +fn file_lines(db: &impl SyntaxDatabase, file_id: FileId) -> Arc { + let text = db.file_text(file_id); + Arc::new(LineIndex::new(&*text)) +} +fn file_symbols(db: &impl SyntaxDatabase, file_id: FileId) -> Arc { + let syntax = db.file_syntax(file_id); + Arc::new(SymbolIndex::for_file(file_id, syntax)) +} -- cgit v1.2.3