Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/db.rs')
-rw-r--r--crates/hir-def/src/db.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/crates/hir-def/src/db.rs b/crates/hir-def/src/db.rs
index aeda302f35..d7e83ce33e 100644
--- a/crates/hir-def/src/db.rs
+++ b/crates/hir-def/src/db.rs
@@ -2,7 +2,7 @@
use base_db::{ra_salsa, CrateId, SourceDatabase, Upcast};
use either::Either;
use hir_expand::{db::ExpandDatabase, HirFileId, MacroDefId};
-use intern::{sym, Interned};
+use intern::sym;
use la_arena::ArenaMap;
use span::{EditionedFileId, MacroCallId};
use syntax::{ast, AstPtr};
@@ -18,9 +18,10 @@ use crate::{
},
generics::GenericParams,
import_map::ImportMap,
- item_tree::{AttrOwner, ItemTree},
+ item_tree::{AttrOwner, ItemTree, ItemTreeSourceMaps},
lang_item::{self, LangItem, LangItemTarget, LangItems},
nameres::{diagnostics::DefDiagnostics, DefMap},
+ type_ref::TypesSourceMap,
visibility::{self, Visibility},
AttrDefId, BlockId, BlockLoc, ConstBlockId, ConstBlockLoc, ConstId, ConstLoc, DefWithBodyId,
EnumId, EnumLoc, EnumVariantId, EnumVariantLoc, ExternBlockId, ExternBlockLoc, ExternCrateId,
@@ -91,6 +92,18 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + Upcast<dyn ExpandDataba
#[ra_salsa::invoke(ItemTree::block_item_tree_query)]
fn block_item_tree(&self, block_id: BlockId) -> Arc<ItemTree>;
+ #[ra_salsa::invoke(ItemTree::file_item_tree_with_source_map_query)]
+ fn file_item_tree_with_source_map(
+ &self,
+ file_id: HirFileId,
+ ) -> (Arc<ItemTree>, Arc<ItemTreeSourceMaps>);
+
+ #[ra_salsa::invoke(ItemTree::block_item_tree_with_source_map_query)]
+ fn block_item_tree_with_source_map(
+ &self,
+ block_id: BlockId,
+ ) -> (Arc<ItemTree>, Arc<ItemTreeSourceMaps>);
+
#[ra_salsa::invoke(DefMap::crate_def_map_query)]
fn crate_def_map(&self, krate: CrateId) -> Arc<DefMap>;
@@ -187,7 +200,14 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + Upcast<dyn ExpandDataba
fn expr_scopes(&self, def: DefWithBodyId) -> Arc<ExprScopes>;
#[ra_salsa::invoke(GenericParams::generic_params_query)]
- fn generic_params(&self, def: GenericDefId) -> Interned<GenericParams>;
+ fn generic_params(&self, def: GenericDefId) -> Arc<GenericParams>;
+
+ /// If this returns `None` for the source map, that means it is the same as with the item tree.
+ #[ra_salsa::invoke(GenericParams::generic_params_with_source_map_query)]
+ fn generic_params_with_source_map(
+ &self,
+ def: GenericDefId,
+ ) -> (Arc<GenericParams>, Option<Arc<TypesSourceMap>>);
// region:attrs