aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/db.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-05-04 15:38:09 +0100
committerAleksey Kladov <[email protected]>2019-05-04 15:38:09 +0100
commit5dc384132f7fe6f610ec21e62830ab83f45274a9 (patch)
treef9b89014aff6dab0353b2134dc5e8cf502f7fc4f /crates/ra_hir/src/db.rs
parent8876f44054f57c1f4ee305eb47340609683bd566 (diff)
introduce macro_arg intermediate query
Currently, when expanding macros, we look at the source code directly (we invoke ast_id_to_node query via to_node method). This is less then ideal, because it make us re-expand macros after every source change. This commit establishes a salsa-firewall: a query to get macro call's token tree. Unlike the syntax tree, token tree changes only if we actually modify the macro itself.
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r--crates/ra_hir/src/db.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs
index 8af0a3176..f88ae61bb 100644
--- a/crates/ra_hir/src/db.rs
+++ b/crates/ra_hir/src/db.rs
@@ -42,7 +42,10 @@ pub trait DefDatabase: SourceDatabase {
42 #[salsa::invoke(crate::ids::macro_def_query)] 42 #[salsa::invoke(crate::ids::macro_def_query)]
43 fn macro_def(&self, macro_id: MacroDefId) -> Option<Arc<mbe::MacroRules>>; 43 fn macro_def(&self, macro_id: MacroDefId) -> Option<Arc<mbe::MacroRules>>;
44 44
45 #[salsa::invoke(HirFileId::hir_parse_query)] 45 #[salsa::invoke(crate::ids::macro_arg_query)]
46 fn macro_arg(&self, macro_call: ids::MacroCallId) -> Option<Arc<tt::Subtree>>;
47
48 #[salsa::invoke(crate::ids::HirFileId::hir_parse_query)]
46 fn hir_parse(&self, file_id: HirFileId) -> TreeArc<SourceFile>; 49 fn hir_parse(&self, file_id: HirFileId) -> TreeArc<SourceFile>;
47 50
48 #[salsa::invoke(crate::adt::StructData::struct_data_query)] 51 #[salsa::invoke(crate::adt::StructData::struct_data_query)]