about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRémy Rakic <remy.rakic+github@gmail.com>2024-12-30 01:16:52 +0000
committerRémy Rakic <remy.rakic+github@gmail.com>2024-12-30 06:51:16 +0000
commit8c86e52ed7750e1f21ec8ce729cb5d4f20b073d5 (patch)
tree2e85e60dbce46aeb0bb00d8104d64c0449948f14
parentfbefa2e26722540c7641cc5c0ba8e29b243d8a02 (diff)
downloadrust-8c86e52ed7750e1f21ec8ce729cb5d4f20b073d5.tar.gz
rust-8c86e52ed7750e1f21ec8ce729cb5d4f20b073d5.zip
clean up `BorrowckDiags`
- rename it to what it does, buffer diagnostics
- remove single-use functions
- use derives
-rw-r--r--compiler/rustc_borrowck/src/diagnostics/mod.rs23
-rw-r--r--compiler/rustc_borrowck/src/lib.rs9
-rw-r--r--compiler/rustc_borrowck/src/nll.rs4
3 files changed, 13 insertions, 23 deletions
diff --git a/compiler/rustc_borrowck/src/diagnostics/mod.rs b/compiler/rustc_borrowck/src/diagnostics/mod.rs
index c82f5973016..f1189617c02 100644
--- a/compiler/rustc_borrowck/src/diagnostics/mod.rs
+++ b/compiler/rustc_borrowck/src/diagnostics/mod.rs
@@ -85,7 +85,8 @@ impl<'infcx> BufferedDiag<'infcx> {
     }
 }
 
-pub(crate) struct BorrowckDiags<'infcx, 'tcx> {
+#[derive(Default)]
+pub(crate) struct BorrowckDiagnosticsBuffer<'infcx, '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
@@ -108,19 +109,7 @@ pub(crate) struct BorrowckDiags<'infcx, 'tcx> {
     buffered_diags: Vec<BufferedDiag<'infcx>>,
 }
 
-impl<'infcx, 'tcx> BorrowckDiags<'infcx, 'tcx> {
-    pub(crate) fn new() -> Self {
-        BorrowckDiags {
-            buffered_move_errors: BTreeMap::new(),
-            buffered_mut_errors: Default::default(),
-            buffered_diags: Default::default(),
-        }
-    }
-
-    pub(crate) fn buffer_error(&mut self, diag: Diag<'infcx>) {
-        self.buffered_diags.push(BufferedDiag::Error(diag));
-    }
-
+impl<'infcx, 'tcx> BorrowckDiagnosticsBuffer<'infcx, 'tcx> {
     pub(crate) fn buffer_non_error(&mut self, diag: Diag<'infcx, ()>) {
         self.buffered_diags.push(BufferedDiag::NonError(diag));
     }
@@ -128,7 +117,7 @@ impl<'infcx, 'tcx> BorrowckDiags<'infcx, 'tcx> {
 
 impl<'infcx, 'tcx> MirBorrowckCtxt<'_, 'infcx, 'tcx> {
     pub(crate) fn buffer_error(&mut self, diag: Diag<'infcx>) {
-        self.diags.buffer_error(diag);
+        self.diags.buffered_diags.push(BufferedDiag::Error(diag));
     }
 
     pub(crate) fn buffer_non_error(&mut self, diag: Diag<'infcx, ()>) {
@@ -166,7 +155,7 @@ impl<'infcx, 'tcx> MirBorrowckCtxt<'_, 'infcx, 'tcx> {
         // Buffer any move errors that we collected and de-duplicated.
         for (_, (_, diag)) in std::mem::take(&mut self.diags.buffered_move_errors) {
             // We have already set tainted for this error, so just buffer it.
-            self.diags.buffer_error(diag);
+            self.buffer_error(diag);
         }
         for (_, (mut diag, count)) in std::mem::take(&mut self.diags.buffered_mut_errors) {
             if count > 10 {
@@ -174,7 +163,7 @@ impl<'infcx, 'tcx> MirBorrowckCtxt<'_, 'infcx, 'tcx> {
                 #[allow(rustc::untranslatable_diagnostic)]
                 diag.note(format!("...and {} other attempted mutable borrows", count - 10));
             }
-            self.diags.buffer_error(diag);
+            self.buffer_error(diag);
         }
 
         if !self.diags.buffered_diags.is_empty() {
diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs
index 6571fb5ddac..51053a41d43 100644
--- a/compiler/rustc_borrowck/src/lib.rs
+++ b/compiler/rustc_borrowck/src/lib.rs
@@ -19,7 +19,6 @@ use std::cell::RefCell;
 use std::marker::PhantomData;
 use std::ops::Deref;
 
-use diagnostics::BorrowckDiags;
 use rustc_abi::FieldIdx;
 use rustc_data_structures::fx::{FxIndexMap, FxIndexSet};
 use rustc_data_structures::graph::dominators::Dominators;
@@ -51,7 +50,9 @@ use tracing::{debug, instrument};
 use crate::borrow_set::{BorrowData, BorrowSet};
 use crate::consumers::{BodyWithBorrowckFacts, ConsumerOptions};
 use crate::dataflow::{BorrowIndex, Borrowck, BorrowckDomain, Borrows};
-use crate::diagnostics::{AccessKind, IllegalMoveOriginKind, MoveError, RegionName};
+use crate::diagnostics::{
+    AccessKind, BorrowckDiagnosticsBuffer, IllegalMoveOriginKind, MoveError, RegionName,
+};
 use crate::path_utils::*;
 use crate::place_ext::PlaceExt;
 use crate::places_conflict::{PlaceConflictBias, places_conflict};
@@ -216,7 +217,7 @@ fn do_mir_borrowck<'tcx>(
 
     // We also have a `#[rustc_regions]` annotation that causes us to dump
     // information.
-    let diags = &mut BorrowckDiags::new();
+    let diags = &mut BorrowckDiagnosticsBuffer::default();
     nll::dump_annotation(&infcx, body, &regioncx, &opt_closure_req, &opaque_type_values, diags);
 
     let movable_coroutine =
@@ -565,7 +566,7 @@ struct MirBorrowckCtxt<'a, 'infcx, 'tcx> {
     /// Results of Polonius analysis.
     polonius_output: Option<Box<PoloniusOutput>>,
 
-    diags: &'a mut BorrowckDiags<'infcx, 'tcx>,
+    diags: &'a mut BorrowckDiagnosticsBuffer<'infcx, 'tcx>,
     move_errors: Vec<MoveError<'tcx>>,
 }
 
diff --git a/compiler/rustc_borrowck/src/nll.rs b/compiler/rustc_borrowck/src/nll.rs
index 6184f1484b5..08a81417eba 100644
--- a/compiler/rustc_borrowck/src/nll.rs
+++ b/compiler/rustc_borrowck/src/nll.rs
@@ -26,7 +26,7 @@ use tracing::{debug, instrument};
 
 use crate::borrow_set::BorrowSet;
 use crate::consumers::ConsumerOptions;
-use crate::diagnostics::{BorrowckDiags, RegionErrors};
+use crate::diagnostics::{BorrowckDiagnosticsBuffer, RegionErrors};
 use crate::polonius::LocalizedOutlivesConstraintSet;
 use crate::polonius::legacy::{AllFacts, AllFactsExt, LocationTable, PoloniusOutput};
 use crate::region_infer::RegionInferenceContext;
@@ -298,7 +298,7 @@ pub(super) fn dump_annotation<'tcx, 'infcx>(
     regioncx: &RegionInferenceContext<'tcx>,
     closure_region_requirements: &Option<ClosureRegionRequirements<'tcx>>,
     opaque_type_values: &FxIndexMap<LocalDefId, OpaqueHiddenType<'tcx>>,
-    diags: &mut BorrowckDiags<'infcx, 'tcx>,
+    diags: &mut BorrowckDiagnosticsBuffer<'infcx, 'tcx>,
 ) {
     let tcx = infcx.tcx;
     let base_def_id = tcx.typeck_root_def_id(body.source.def_id());