diff options
author | Aleksey Kladov <[email protected]> | 2019-06-02 18:15:10 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-06-02 18:15:10 +0100 |
commit | 8b7f58976b32ccc768e35151b77aa9ea004b7495 (patch) | |
tree | 272f93a4431ca77d6cce8ee43c0d6d4f3c636701 /crates/ra_hir/src/db.rs | |
parent | b40c6de8a6887e6c184fca5c9188d26ee402df23 (diff) |
don't cache parses twice
Before this commit, `Parse`s for original file ended up two times in
salsa's db: first, when we parse original file, and second, when we
parse macro or a file.
Given that parse trees are the worst ofenders in terms of memory, it
makes sense to make sure we store them only once.
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r-- | crates/ra_hir/src/db.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 872103219..3afd0994c 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs | |||
@@ -33,8 +33,11 @@ pub trait AstDatabase: SourceDatabase { | |||
33 | #[salsa::transparent] | 33 | #[salsa::transparent] |
34 | #[salsa::invoke(crate::source_id::AstIdMap::file_item_query)] | 34 | #[salsa::invoke(crate::source_id::AstIdMap::file_item_query)] |
35 | fn ast_id_to_node(&self, file_id: HirFileId, ast_id: ErasedFileAstId) -> TreeArc<SyntaxNode>; | 35 | fn ast_id_to_node(&self, file_id: HirFileId, ast_id: ErasedFileAstId) -> TreeArc<SyntaxNode>; |
36 | #[salsa::transparent] | ||
36 | #[salsa::invoke(crate::ids::HirFileId::parse_or_expand_query)] | 37 | #[salsa::invoke(crate::ids::HirFileId::parse_or_expand_query)] |
37 | fn parse_or_expand(&self, file_id: HirFileId) -> Option<TreeArc<SyntaxNode>>; | 38 | fn parse_or_expand(&self, file_id: HirFileId) -> Option<TreeArc<SyntaxNode>>; |
39 | #[salsa::invoke(crate::ids::HirFileId::parse_macro_query)] | ||
40 | fn parse_macro(&self, macro_file: ids::MacroFile) -> Option<TreeArc<SyntaxNode>>; | ||
38 | 41 | ||
39 | #[salsa::invoke(crate::ids::macro_def_query)] | 42 | #[salsa::invoke(crate::ids::macro_def_query)] |
40 | fn macro_def(&self, macro_id: MacroDefId) -> Option<Arc<mbe::MacroRules>>; | 43 | fn macro_def(&self, macro_id: MacroDefId) -> Option<Arc<mbe::MacroRules>>; |