Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/db.rs')
| -rw-r--r-- | crates/hir-ty/src/db.rs | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/crates/hir-ty/src/db.rs b/crates/hir-ty/src/db.rs index 71fb3d44fb..82d17cc618 100644 --- a/crates/hir-ty/src/db.rs +++ b/crates/hir-ty/src/db.rs @@ -32,62 +32,71 @@ use crate::{ pub trait HirDatabase: DefDatabase + std::fmt::Debug { #[salsa::invoke(crate::infer::infer_query)] #[salsa::cycle(cycle_result = crate::infer::infer_cycle_result)] - fn infer(&self, def: DefWithBodyId) -> Arc<InferenceResult>; + fn infer<'db>(&'db self, def: DefWithBodyId) -> Arc<InferenceResult<'db>>; // region:mir #[salsa::invoke(crate::mir::mir_body_query)] #[salsa::cycle(cycle_result = crate::mir::mir_body_cycle_result)] - fn mir_body(&self, def: DefWithBodyId) -> Result<Arc<MirBody>, MirLowerError>; + fn mir_body<'db>(&'db self, def: DefWithBodyId) -> Result<Arc<MirBody>, MirLowerError<'db>>; #[salsa::invoke(crate::mir::mir_body_for_closure_query)] - fn mir_body_for_closure(&self, def: InternedClosureId) -> Result<Arc<MirBody>, MirLowerError>; + fn mir_body_for_closure<'db>( + &'db self, + def: InternedClosureId, + ) -> Result<Arc<MirBody>, MirLowerError<'db>>; #[salsa::invoke(crate::mir::monomorphized_mir_body_query)] #[salsa::cycle(cycle_result = crate::mir::monomorphized_mir_body_cycle_result)] - fn monomorphized_mir_body( - &self, + fn monomorphized_mir_body<'db>( + &'db self, def: DefWithBodyId, subst: Substitution, - env: Arc<TraitEnvironment<'_>>, - ) -> Result<Arc<MirBody>, MirLowerError>; + env: Arc<TraitEnvironment<'db>>, + ) -> Result<Arc<MirBody>, MirLowerError<'db>>; #[salsa::invoke(crate::mir::monomorphized_mir_body_for_closure_query)] - fn monomorphized_mir_body_for_closure( - &self, + fn monomorphized_mir_body_for_closure<'db>( + &'db self, def: InternedClosureId, subst: Substitution, - env: Arc<TraitEnvironment<'_>>, - ) -> Result<Arc<MirBody>, MirLowerError>; + env: Arc<TraitEnvironment<'db>>, + ) -> Result<Arc<MirBody>, MirLowerError<'db>>; #[salsa::invoke(crate::mir::borrowck_query)] #[salsa::lru(2024)] - fn borrowck(&self, def: DefWithBodyId) -> Result<Arc<[BorrowckResult]>, MirLowerError>; + fn borrowck<'db>( + &'db self, + def: DefWithBodyId, + ) -> Result<Arc<[BorrowckResult]>, MirLowerError<'db>>; #[salsa::invoke(crate::consteval::const_eval_query)] #[salsa::cycle(cycle_result = crate::consteval::const_eval_cycle_result)] - fn const_eval( - &self, + fn const_eval<'db>( + &'db self, def: GeneralConstId, subst: Substitution, - trait_env: Option<Arc<TraitEnvironment<'_>>>, - ) -> Result<Const, ConstEvalError>; + trait_env: Option<Arc<TraitEnvironment<'db>>>, + ) -> Result<Const, ConstEvalError<'db>>; #[salsa::invoke(crate::consteval::const_eval_static_query)] #[salsa::cycle(cycle_result = crate::consteval::const_eval_static_cycle_result)] - fn const_eval_static(&self, def: StaticId) -> Result<Const, ConstEvalError>; + fn const_eval_static<'db>(&'db self, def: StaticId) -> Result<Const, ConstEvalError<'db>>; #[salsa::invoke(crate::consteval::const_eval_discriminant_variant)] #[salsa::cycle(cycle_result = crate::consteval::const_eval_discriminant_cycle_result)] - fn const_eval_discriminant(&self, def: EnumVariantId) -> Result<i128, ConstEvalError>; + fn const_eval_discriminant<'db>( + &'db self, + def: EnumVariantId, + ) -> Result<i128, ConstEvalError<'db>>; #[salsa::invoke(crate::method_resolution::lookup_impl_method_query)] - fn lookup_impl_method( - &self, - env: Arc<TraitEnvironment<'_>>, + fn lookup_impl_method<'db>( + &'db self, + env: Arc<TraitEnvironment<'db>>, func: FunctionId, - fn_subst: Substitution, - ) -> (FunctionId, Substitution); + fn_subst: crate::next_solver::GenericArgs<'db>, + ) -> (FunctionId, crate::next_solver::GenericArgs<'db>); // endregion:mir @@ -370,6 +379,23 @@ pub trait HirDatabase: DefDatabase + std::fmt::Debug { &'db self, def: GenericDefId, ) -> crate::lower_nextsolver::GenericPredicates<'db>; + + #[salsa::invoke(crate::lower_nextsolver::generic_defaults_with_diagnostics_query)] + #[salsa::cycle(cycle_result = crate::lower_nextsolver::generic_defaults_with_diagnostics_cycle_result)] + fn generic_defaults_ns_with_diagnostics<'db>( + &'db self, + def: GenericDefId, + ) -> (crate::lower_nextsolver::GenericDefaults<'db>, Diagnostics); + + /// This returns an empty list if no parameter has default. + /// + /// The binders of the returned defaults are only up to (not including) this parameter. + #[salsa::invoke(crate::lower_nextsolver::generic_defaults_query)] + #[salsa::transparent] + fn generic_defaults_ns<'db>( + &'db self, + def: GenericDefId, + ) -> crate::lower_nextsolver::GenericDefaults<'db>; } #[test] |