Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/diagnostics.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/diagnostics.rs | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/crates/hir-ty/src/infer/diagnostics.rs b/crates/hir-ty/src/infer/diagnostics.rs index 003364d433..844eb02ab0 100644 --- a/crates/hir-ty/src/infer/diagnostics.rs +++ b/crates/hir-ty/src/infer/diagnostics.rs @@ -12,11 +12,11 @@ use hir_def::expr_store::path::Path; use hir_def::{hir::ExprOrPatId, resolver::Resolver}; use la_arena::{Idx, RawIdx}; -use crate::lower::LifetimeElisionKind; use crate::{ - InferenceDiagnostic, InferenceTyDiagnosticSource, TyLoweringContext, TyLoweringDiagnostic, + InferenceDiagnostic, InferenceTyDiagnosticSource, TyLoweringDiagnostic, db::HirDatabase, lower::path::{PathDiagnosticCallback, PathLoweringContext}, + lower::{LifetimeElisionKind, TyLoweringContext}, }; // Unfortunately, this struct needs to use interior mutability (but we encapsulate it) @@ -24,10 +24,10 @@ use crate::{ // to our resolver and so we cannot have mutable reference, but we really want to have // ability to dispatch diagnostics during this work otherwise the code becomes a complete mess. #[derive(Debug, Default, Clone)] -pub(super) struct Diagnostics(RefCell<Vec<InferenceDiagnostic>>); +pub(super) struct Diagnostics<'db>(RefCell<Vec<InferenceDiagnostic<'db>>>); -impl Diagnostics { - pub(super) fn push(&self, diagnostic: InferenceDiagnostic) { +impl<'db> Diagnostics<'db> { + pub(super) fn push(&self, diagnostic: InferenceDiagnostic<'db>) { self.0.borrow_mut().push(diagnostic); } @@ -41,32 +41,32 @@ impl Diagnostics { ); } - pub(super) fn finish(self) -> Vec<InferenceDiagnostic> { + pub(super) fn finish(self) -> Vec<InferenceDiagnostic<'db>> { self.0.into_inner() } } -pub(crate) struct PathDiagnosticCallbackData<'a> { +pub(crate) struct PathDiagnosticCallbackData<'a, 'db> { node: ExprOrPatId, - diagnostics: &'a Diagnostics, + diagnostics: &'a Diagnostics<'db>, } -pub(super) struct InferenceTyLoweringContext<'a> { - ctx: TyLoweringContext<'a>, - diagnostics: &'a Diagnostics, +pub(super) struct InferenceTyLoweringContext<'db, 'a> { + ctx: TyLoweringContext<'db, 'a>, + diagnostics: &'a Diagnostics<'db>, source: InferenceTyDiagnosticSource, } -impl<'a> InferenceTyLoweringContext<'a> { +impl<'db, 'a> InferenceTyLoweringContext<'db, 'a> { #[inline] pub(super) fn new( - db: &'a dyn HirDatabase, - resolver: &'a Resolver<'_>, + db: &'db dyn HirDatabase, + resolver: &'a Resolver<'db>, store: &'a ExpressionStore, - diagnostics: &'a Diagnostics, + diagnostics: &'a Diagnostics<'db>, source: InferenceTyDiagnosticSource, generic_def: GenericDefId, - lifetime_elision: LifetimeElisionKind, + lifetime_elision: LifetimeElisionKind<'db>, ) -> Self { Self { ctx: TyLoweringContext::new(db, resolver, store, generic_def, lifetime_elision), @@ -80,7 +80,7 @@ impl<'a> InferenceTyLoweringContext<'a> { &'b mut self, path: &'b Path, node: ExprOrPatId, - ) -> PathLoweringContext<'b, 'a> { + ) -> PathLoweringContext<'b, 'a, 'db> { let on_diagnostic = PathDiagnosticCallback { data: Either::Right(PathDiagnosticCallbackData { diagnostics: self.diagnostics, node }), callback: |data, _, diag| { @@ -96,7 +96,7 @@ impl<'a> InferenceTyLoweringContext<'a> { pub(super) fn at_path_forget_diagnostics<'b>( &'b mut self, path: &'b Path, - ) -> PathLoweringContext<'b, 'a> { + ) -> PathLoweringContext<'b, 'a, 'db> { let on_diagnostic = PathDiagnosticCallback { data: Either::Right(PathDiagnosticCallbackData { diagnostics: self.diagnostics, @@ -113,8 +113,8 @@ impl<'a> InferenceTyLoweringContext<'a> { } } -impl<'a> Deref for InferenceTyLoweringContext<'a> { - type Target = TyLoweringContext<'a>; +impl<'db, 'a> Deref for InferenceTyLoweringContext<'db, 'a> { + type Target = TyLoweringContext<'db, 'a>; #[inline] fn deref(&self) -> &Self::Target { @@ -122,14 +122,14 @@ impl<'a> Deref for InferenceTyLoweringContext<'a> { } } -impl DerefMut for InferenceTyLoweringContext<'_> { +impl DerefMut for InferenceTyLoweringContext<'_, '_> { #[inline] fn deref_mut(&mut self) -> &mut Self::Target { &mut self.ctx } } -impl Drop for InferenceTyLoweringContext<'_> { +impl Drop for InferenceTyLoweringContext<'_, '_> { #[inline] fn drop(&mut self) { self.diagnostics |