diff options
Diffstat (limited to 'crates/ra_hir_ty/src/db.rs')
-rw-r--r-- | crates/ra_hir_ty/src/db.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/crates/ra_hir_ty/src/db.rs b/crates/ra_hir_ty/src/db.rs index fea122a8b..7684ade06 100644 --- a/crates/ra_hir_ty/src/db.rs +++ b/crates/ra_hir_ty/src/db.rs | |||
@@ -3,10 +3,10 @@ | |||
3 | use std::sync::Arc; | 3 | use std::sync::Arc; |
4 | 4 | ||
5 | use hir_def::{ | 5 | use hir_def::{ |
6 | db::DefDatabase, DefWithBodyId, GenericDefId, ImplId, LocalStructFieldId, TraitId, VariantId, | 6 | db::DefDatabase, DefWithBodyId, GenericDefId, ImplId, LocalStructFieldId, TraitId, VariantId, TypeParamId, |
7 | }; | 7 | }; |
8 | use ra_arena::map::ArenaMap; | 8 | use ra_arena::map::ArenaMap; |
9 | use ra_db::{salsa, CrateId}; | 9 | use ra_db::{impl_intern_key, salsa, CrateId}; |
10 | use ra_prof::profile; | 10 | use ra_prof::profile; |
11 | 11 | ||
12 | use crate::{ | 12 | use crate::{ |
@@ -37,10 +37,10 @@ pub trait HirDatabase: DefDatabase { | |||
37 | fn impl_self_ty(&self, def: ImplId) -> Binders<Ty>; | 37 | fn impl_self_ty(&self, def: ImplId) -> Binders<Ty>; |
38 | 38 | ||
39 | #[salsa::invoke(crate::lower::impl_trait_query)] | 39 | #[salsa::invoke(crate::lower::impl_trait_query)] |
40 | fn impl_trait(&self, def: ImplId) -> Option<TraitRef>; | 40 | fn impl_trait(&self, def: ImplId) -> Option<Binders<TraitRef>>; |
41 | 41 | ||
42 | #[salsa::invoke(crate::lower::field_types_query)] | 42 | #[salsa::invoke(crate::lower::field_types_query)] |
43 | fn field_types(&self, var: VariantId) -> Arc<ArenaMap<LocalStructFieldId, Ty>>; | 43 | fn field_types(&self, var: VariantId) -> Arc<ArenaMap<LocalStructFieldId, Binders<Ty>>>; |
44 | 44 | ||
45 | #[salsa::invoke(crate::callable_item_sig)] | 45 | #[salsa::invoke(crate::callable_item_sig)] |
46 | fn callable_item_signature(&self, def: CallableDef) -> PolyFnSig; | 46 | fn callable_item_signature(&self, def: CallableDef) -> PolyFnSig; |
@@ -49,8 +49,7 @@ pub trait HirDatabase: DefDatabase { | |||
49 | #[salsa::cycle(crate::lower::generic_predicates_for_param_recover)] | 49 | #[salsa::cycle(crate::lower::generic_predicates_for_param_recover)] |
50 | fn generic_predicates_for_param( | 50 | fn generic_predicates_for_param( |
51 | &self, | 51 | &self, |
52 | def: GenericDefId, | 52 | param_id: TypeParamId, |
53 | param_idx: u32, | ||
54 | ) -> Arc<[GenericPredicate]>; | 53 | ) -> Arc<[GenericPredicate]>; |
55 | 54 | ||
56 | #[salsa::invoke(crate::lower::generic_predicates_query)] | 55 | #[salsa::invoke(crate::lower::generic_predicates_query)] |
@@ -77,6 +76,8 @@ pub trait HirDatabase: DefDatabase { | |||
77 | #[salsa::interned] | 76 | #[salsa::interned] |
78 | fn intern_type_ctor(&self, type_ctor: TypeCtor) -> crate::TypeCtorId; | 77 | fn intern_type_ctor(&self, type_ctor: TypeCtor) -> crate::TypeCtorId; |
79 | #[salsa::interned] | 78 | #[salsa::interned] |
79 | fn intern_type_param_id(&self, param_id: TypeParamId) -> GlobalTypeParamId; | ||
80 | #[salsa::interned] | ||
80 | fn intern_chalk_impl(&self, impl_: Impl) -> crate::traits::GlobalImplId; | 81 | fn intern_chalk_impl(&self, impl_: Impl) -> crate::traits::GlobalImplId; |
81 | #[salsa::interned] | 82 | #[salsa::interned] |
82 | fn intern_assoc_ty_value(&self, assoc_ty_value: AssocTyValue) -> crate::traits::AssocTyValueId; | 83 | fn intern_assoc_ty_value(&self, assoc_ty_value: AssocTyValue) -> crate::traits::AssocTyValueId; |
@@ -117,3 +118,7 @@ fn infer(db: &impl HirDatabase, def: DefWithBodyId) -> Arc<InferenceResult> { | |||
117 | fn hir_database_is_object_safe() { | 118 | fn hir_database_is_object_safe() { |
118 | fn _assert_object_safe(_: &dyn HirDatabase) {} | 119 | fn _assert_object_safe(_: &dyn HirDatabase) {} |
119 | } | 120 | } |
121 | |||
122 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | ||
123 | pub struct GlobalTypeParamId(salsa::InternId); | ||
124 | impl_intern_key!(GlobalTypeParamId); | ||