aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_db/Cargo.toml1
-rw-r--r--crates/ra_db/src/lib.rs5
-rw-r--r--crates/ra_hir/src/ids.rs2
3 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_db/Cargo.toml b/crates/ra_db/Cargo.toml
index 08aef9bf5..5328303d2 100644
--- a/crates/ra_db/Cargo.toml
+++ b/crates/ra_db/Cargo.toml
@@ -12,4 +12,5 @@ parking_lot = "0.7.0"
12 12
13ra_arena = { path = "../ra_arena" } 13ra_arena = { path = "../ra_arena" }
14ra_syntax = { path = "../ra_syntax" } 14ra_syntax = { path = "../ra_syntax" }
15ra_prof = { path = "../ra_prof" }
15test_utils = { path = "../test_utils" } 16test_utils = { path = "../test_utils" }
diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs
index bf567721a..68b9a7143 100644
--- a/crates/ra_db/src/lib.rs
+++ b/crates/ra_db/src/lib.rs
@@ -6,6 +6,7 @@ use std::{panic, sync::Arc};
6 6
7use ra_syntax::{TextUnit, TextRange, SourceFile, TreeArc}; 7use ra_syntax::{TextUnit, TextRange, SourceFile, TreeArc};
8use relative_path::RelativePathBuf; 8use relative_path::RelativePathBuf;
9use ra_prof::profile;
9 10
10pub use ::salsa as salsa; 11pub use ::salsa as salsa;
11pub use crate::{ 12pub use crate::{
@@ -72,6 +73,7 @@ pub trait SourceDatabase: CheckCanceled + std::fmt::Debug {
72 #[salsa::input] 73 #[salsa::input]
73 fn file_text(&self, file_id: FileId) -> Arc<String>; 74 fn file_text(&self, file_id: FileId) -> Arc<String>;
74 // Parses the file into the syntax tree. 75 // Parses the file into the syntax tree.
76 #[salsa::invoke(parse_query)]
75 fn parse(&self, file_id: FileId) -> TreeArc<SourceFile>; 77 fn parse(&self, file_id: FileId) -> TreeArc<SourceFile>;
76 /// Path to a file, relative to the root of its source root. 78 /// Path to a file, relative to the root of its source root.
77 #[salsa::input] 79 #[salsa::input]
@@ -96,7 +98,8 @@ fn source_root_crates(db: &impl SourceDatabase, id: SourceRootId) -> Arc<Vec<Cra
96 Arc::new(res) 98 Arc::new(res)
97} 99}
98 100
99fn parse(db: &impl SourceDatabase, file_id: FileId) -> TreeArc<SourceFile> { 101fn parse_query(db: &impl SourceDatabase, file_id: FileId) -> TreeArc<SourceFile> {
102 let _p = profile("parse_query");
100 let text = db.file_text(file_id); 103 let text = db.file_text(file_id);
101 SourceFile::parse(&*text) 104 SourceFile::parse(&*text)
102} 105}
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs
index f901a7432..2eb7f0da0 100644
--- a/crates/ra_hir/src/ids.rs
+++ b/crates/ra_hir/src/ids.rs
@@ -5,6 +5,7 @@ use std::{
5 5
6use ra_db::{FileId, salsa}; 6use ra_db::{FileId, salsa};
7use ra_syntax::{TreeArc, AstNode, ast, SyntaxNode}; 7use ra_syntax::{TreeArc, AstNode, ast, SyntaxNode};
8use ra_prof::profile;
8use mbe::MacroRules; 9use mbe::MacroRules;
9 10
10use crate::{ 11use crate::{
@@ -60,6 +61,7 @@ impl HirFileId {
60 db: &impl DefDatabase, 61 db: &impl DefDatabase,
61 file_id: HirFileId, 62 file_id: HirFileId,
62 ) -> Option<TreeArc<SyntaxNode>> { 63 ) -> Option<TreeArc<SyntaxNode>> {
64 let _p = profile("parse_or_expand_query");
63 match file_id.0 { 65 match file_id.0 {
64 HirFileIdRepr::File(file_id) => Some(db.parse(file_id).syntax().to_owned()), 66 HirFileIdRepr::File(file_id) => Some(db.parse(file_id).syntax().to_owned()),
65 HirFileIdRepr::Macro(macro_file) => { 67 HirFileIdRepr::Macro(macro_file) => {