aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api')
-rw-r--r--crates/ra_ide_api/src/lib.rs6
-rw-r--r--crates/ra_ide_api/src/status.rs15
2 files changed, 21 insertions, 0 deletions
diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs
index a09a8f926..3c53e75ac 100644
--- a/crates/ra_ide_api/src/lib.rs
+++ b/crates/ra_ide_api/src/lib.rs
@@ -15,6 +15,7 @@ pub mod mock_analysis;
15mod symbol_index; 15mod symbol_index;
16mod navigation_target; 16mod navigation_target;
17 17
18mod status;
18mod completion; 19mod completion;
19mod runnables; 20mod runnables;
20mod goto_definition; 21mod goto_definition;
@@ -293,6 +294,11 @@ pub struct Analysis {
293} 294}
294 295
295impl Analysis { 296impl Analysis {
297 /// Debug info about the current state of the analysis
298 pub fn status(&self) -> String {
299 status::status(&*self.db)
300 }
301
296 /// Gets the text of the source file. 302 /// Gets the text of the source file.
297 pub fn file_text(&self, file_id: FileId) -> Arc<String> { 303 pub fn file_text(&self, file_id: FileId) -> Arc<String> {
298 self.db.file_text(file_id) 304 self.db.file_text(file_id)
diff --git a/crates/ra_ide_api/src/status.rs b/crates/ra_ide_api/src/status.rs
new file mode 100644
index 000000000..d3e04be23
--- /dev/null
+++ b/crates/ra_ide_api/src/status.rs
@@ -0,0 +1,15 @@
1use ra_db::{
2 LocationIntener, SourceFileQuery,
3 salsa::{Database, debug::DebugQueryTable},
4};
5
6use crate::db::RootDatabase;
7
8pub(crate) fn status(db: &RootDatabase) -> String {
9 let n_parsed_files = db.query(SourceFileQuery).keys::<Vec<_>>().len();
10 let n_defs = {
11 let interner: &LocationIntener<hir::DefLoc, hir::DefId> = db.as_ref();
12 interner.len()
13 };
14 format!("#n_parsed_files {}\n#n_defs {}\n", n_parsed_files, n_defs)
15}