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.rs164
1 files changed, 10 insertions, 154 deletions
diff --git a/crates/hir-def/src/db.rs b/crates/hir-def/src/db.rs
index ccd4bc9be8..5d5d435398 100644
--- a/crates/hir-def/src/db.rs
+++ b/crates/hir-def/src/db.rs
@@ -4,28 +4,18 @@ use hir_expand::{
EditionedFileId, HirFileId, InFile, Lookup, MacroCallId, MacroDefId, MacroDefKind,
db::ExpandDatabase,
};
-use la_arena::ArenaMap;
use triomphe::Arc;
use crate::{
- AssocItemId, AttrDefId, BlockId, BlockLoc, ConstId, ConstLoc, DefWithBodyId, EnumId, EnumLoc,
- EnumVariantId, EnumVariantLoc, ExternBlockId, ExternBlockLoc, ExternCrateId, ExternCrateLoc,
- FunctionId, FunctionLoc, GenericDefId, ImplId, ImplLoc, LocalFieldId, Macro2Id, Macro2Loc,
- MacroExpander, MacroId, MacroRulesId, MacroRulesLoc, MacroRulesLocFlags, ProcMacroId,
- ProcMacroLoc, StaticId, StaticLoc, StructId, StructLoc, TraitId, TraitLoc, TypeAliasId,
- TypeAliasLoc, UnionId, UnionLoc, UseId, UseLoc, VariantId,
+ AnonConstId, AnonConstLoc, AssocItemId, AttrDefId, BlockId, BlockLoc, ConstId, ConstLoc,
+ EnumId, EnumLoc, EnumVariantId, EnumVariantLoc, ExternBlockId, ExternBlockLoc, ExternCrateId,
+ ExternCrateLoc, FunctionId, FunctionLoc, ImplId, ImplLoc, Macro2Id, Macro2Loc, MacroExpander,
+ MacroId, MacroRulesId, MacroRulesLoc, MacroRulesLocFlags, ProcMacroId, ProcMacroLoc, StaticId,
+ StaticLoc, StructId, StructLoc, TraitId, TraitLoc, TypeAliasId, TypeAliasLoc, UnionId,
+ UnionLoc, UseId, UseLoc,
attrs::AttrFlags,
- expr_store::{
- Body, BodySourceMap, ExpressionStore, ExpressionStoreSourceMap, scope::ExprScopes,
- },
- hir::generics::GenericParams,
- import_map::ImportMap,
item_tree::{ItemTree, file_item_tree_query},
nameres::crate_def_map,
- signatures::{
- ConstSignature, EnumSignature, FunctionSignature, ImplSignature, StaticSignature,
- StructSignature, TraitSignature, TypeAliasSignature, UnionSignature,
- },
visibility::{self, Visibility},
};
@@ -62,6 +52,9 @@ pub trait InternDatabase: RootQueryDb {
fn intern_static(&self, loc: StaticLoc) -> StaticId;
#[salsa::interned]
+ fn intern_anon_const(&self, loc: AnonConstLoc) -> AnonConstId;
+
+ #[salsa::interned]
fn intern_trait(&self, loc: TraitLoc) -> TraitId;
#[salsa::interned]
@@ -96,151 +89,14 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + SourceDatabase {
/// Computes an [`ItemTree`] for the given file or macro expansion.
#[salsa::invoke(file_item_tree_query)]
#[salsa::transparent]
- fn file_item_tree(&self, file_id: HirFileId) -> &ItemTree;
+ fn file_item_tree(&self, file_id: HirFileId, krate: Crate) -> &ItemTree;
/// Turns a MacroId into a MacroDefId, describing the macro's definition post name resolution.
#[salsa::invoke(macro_def)]
fn macro_def(&self, m: MacroId) -> MacroDefId;
- // region:data
-
- #[salsa::tracked]
- fn trait_signature(&self, trait_: TraitId) -> Arc<TraitSignature> {
- self.trait_signature_with_source_map(trait_).0
- }
-
- #[salsa::tracked]
- fn impl_signature(&self, impl_: ImplId) -> Arc<ImplSignature> {
- self.impl_signature_with_source_map(impl_).0
- }
-
- #[salsa::tracked]
- fn struct_signature(&self, struct_: StructId) -> Arc<StructSignature> {
- self.struct_signature_with_source_map(struct_).0
- }
-
- #[salsa::tracked]
- fn union_signature(&self, union_: UnionId) -> Arc<UnionSignature> {
- self.union_signature_with_source_map(union_).0
- }
-
- #[salsa::tracked]
- fn enum_signature(&self, e: EnumId) -> Arc<EnumSignature> {
- self.enum_signature_with_source_map(e).0
- }
-
- #[salsa::tracked]
- fn const_signature(&self, e: ConstId) -> Arc<ConstSignature> {
- self.const_signature_with_source_map(e).0
- }
-
- #[salsa::tracked]
- fn static_signature(&self, e: StaticId) -> Arc<StaticSignature> {
- self.static_signature_with_source_map(e).0
- }
-
- #[salsa::tracked]
- fn function_signature(&self, e: FunctionId) -> Arc<FunctionSignature> {
- self.function_signature_with_source_map(e).0
- }
-
- #[salsa::tracked]
- fn type_alias_signature(&self, e: TypeAliasId) -> Arc<TypeAliasSignature> {
- self.type_alias_signature_with_source_map(e).0
- }
-
- #[salsa::invoke(TraitSignature::query)]
- fn trait_signature_with_source_map(
- &self,
- trait_: TraitId,
- ) -> (Arc<TraitSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(ImplSignature::query)]
- fn impl_signature_with_source_map(
- &self,
- impl_: ImplId,
- ) -> (Arc<ImplSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(StructSignature::query)]
- fn struct_signature_with_source_map(
- &self,
- struct_: StructId,
- ) -> (Arc<StructSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(UnionSignature::query)]
- fn union_signature_with_source_map(
- &self,
- union_: UnionId,
- ) -> (Arc<UnionSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(EnumSignature::query)]
- fn enum_signature_with_source_map(
- &self,
- e: EnumId,
- ) -> (Arc<EnumSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(ConstSignature::query)]
- fn const_signature_with_source_map(
- &self,
- e: ConstId,
- ) -> (Arc<ConstSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(StaticSignature::query)]
- fn static_signature_with_source_map(
- &self,
- e: StaticId,
- ) -> (Arc<StaticSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(FunctionSignature::query)]
- fn function_signature_with_source_map(
- &self,
- e: FunctionId,
- ) -> (Arc<FunctionSignature>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(TypeAliasSignature::query)]
- fn type_alias_signature_with_source_map(
- &self,
- e: TypeAliasId,
- ) -> (Arc<TypeAliasSignature>, Arc<ExpressionStoreSourceMap>);
-
- // endregion:data
-
- #[salsa::invoke(Body::body_with_source_map_query)]
- #[salsa::lru(512)]
- fn body_with_source_map(&self, def: DefWithBodyId) -> (Arc<Body>, Arc<BodySourceMap>);
-
- #[salsa::invoke(Body::body_query)]
- fn body(&self, def: DefWithBodyId) -> Arc<Body>;
-
- #[salsa::invoke(ExprScopes::expr_scopes_query)]
- fn expr_scopes(&self, def: DefWithBodyId) -> Arc<ExprScopes>;
-
- #[salsa::transparent]
- #[salsa::invoke(GenericParams::new)]
- fn generic_params(&self, def: GenericDefId) -> Arc<GenericParams>;
-
- #[salsa::transparent]
- #[salsa::invoke(GenericParams::generic_params_and_store)]
- fn generic_params_and_store(
- &self,
- def: GenericDefId,
- ) -> (Arc<GenericParams>, Arc<ExpressionStore>);
-
- #[salsa::transparent]
- #[salsa::invoke(GenericParams::generic_params_and_store_and_source_map)]
- fn generic_params_and_store_and_source_map(
- &self,
- def: GenericDefId,
- ) -> (Arc<GenericParams>, Arc<ExpressionStore>, Arc<ExpressionStoreSourceMap>);
-
- #[salsa::invoke(ImportMap::import_map_query)]
- fn import_map(&self, krate: Crate) -> Arc<ImportMap>;
-
// region:visibilities
- #[salsa::invoke(visibility::field_visibilities_query)]
- fn field_visibilities(&self, var: VariantId) -> Arc<ArenaMap<LocalFieldId, Visibility>>;
-
#[salsa::invoke(visibility::assoc_visibility_query)]
fn assoc_visibility(&self, def: AssocItemId) -> Visibility;