Struct rustc_borrowck::diags::BorrowckDiags
source · pub struct BorrowckDiags<'tcx> {
buffered_move_errors: BTreeMap<Vec<MoveOutIndex>, (PlaceRef<'tcx>, Diag<'tcx>)>,
buffered_mut_errors: FxIndexMap<Span, (Diag<'tcx>, usize)>,
buffered_diags: Vec<BufferedDiag<'tcx>>,
}
Fields§
§buffered_move_errors: BTreeMap<Vec<MoveOutIndex>, (PlaceRef<'tcx>, Diag<'tcx>)>
This field keeps track of move errors that are to be reported for given move indices.
There are situations where many errors can be reported for a single move out (see #53807) and we want only the best of those errors.
The report_use_of_moved_or_uninitialized
function checks this map and replaces the
diagnostic (if there is one) if the Place
of the error being reported is a prefix of
the Place
of the previous most diagnostic. This happens instead of buffering the
error. Once all move errors have been reported, any diagnostics in this map are added
to the buffer to be emitted.
BTreeMap
is used to preserve the order of insertions when iterating. This is necessary
when errors in the map are being re-added to the error buffer so that errors with the
same primary span come out in a consistent order.
buffered_mut_errors: FxIndexMap<Span, (Diag<'tcx>, usize)>
§buffered_diags: Vec<BufferedDiag<'tcx>>
Buffer of diagnostics to be reported. A mixture of error and non-error diagnostics.
Implementations§
source§impl<'tcx> BorrowckDiags<'tcx>
impl<'tcx> BorrowckDiags<'tcx>
pub fn new() -> Self
pub fn buffer_error(&mut self, diag: Diag<'tcx>)
pub fn buffer_non_error(&mut self, diag: Diag<'tcx, ()>)
Auto Trait Implementations§
impl<'tcx> DynSend for BorrowckDiags<'tcx>
impl<'tcx> DynSync for BorrowckDiags<'tcx>
impl<'tcx> Freeze for BorrowckDiags<'tcx>
impl<'tcx> !RefUnwindSafe for BorrowckDiags<'tcx>
impl<'tcx> !Send for BorrowckDiags<'tcx>
impl<'tcx> !Sync for BorrowckDiags<'tcx>
impl<'tcx> Unpin for BorrowckDiags<'tcx>
impl<'tcx> !UnwindSafe for BorrowckDiags<'tcx>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 104 bytes