about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-09-06 11:54:50 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2019-09-26 06:44:57 +0200
commitaff9c833e5a82307b79302c48ce2d245d56c3031 (patch)
tree979050ca9cbc680c0a7b690df2fb1ea588547f0b
parentece6f833dfe99db87d17c02efeaa8aac88ad302b (diff)
rustc_mir: remove dead code for downgrading errors.
-rw-r--r--src/librustc_mir/borrow_check/conflict_errors.rs3
-rw-r--r--src/librustc_mir/borrow_check/mod.rs56
2 files changed, 1 insertions, 58 deletions
diff --git a/src/librustc_mir/borrow_check/conflict_errors.rs b/src/librustc_mir/borrow_check/conflict_errors.rs
index 599a0ad0d0c..b828317c57b 100644
--- a/src/librustc_mir/borrow_check/conflict_errors.rs
+++ b/src/librustc_mir/borrow_check/conflict_errors.rs
@@ -105,9 +105,6 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
                 format!("{} occurs due to use{}", desired_action.as_noun(), use_spans.describe()),
             );
 
-            // This error should not be downgraded to a warning,
-            // even in migrate mode.
-            self.disable_error_downgrading();
             err.buffer(&mut self.errors_buffer);
         } else {
             if let Some((reported_place, _)) = self.move_error_reported.get(&move_out_indices) {
diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs
index 241a398a08c..1c842eac474 100644
--- a/src/librustc_mir/borrow_check/mod.rs
+++ b/src/librustc_mir/borrow_check/mod.rs
@@ -7,7 +7,6 @@ use rustc::hir::def_id::DefId;
 use rustc::infer::InferCtxt;
 use rustc::lint::builtin::UNUSED_MUT;
 use rustc::lint::builtin::{MUTABLE_BORROW_RESERVATION_CONFLICT};
-use rustc::middle::borrowck::SignalledError;
 use rustc::mir::{AggregateKind, BasicBlock, BorrowCheckResult, BorrowKind};
 use rustc::mir::{
     ClearCrossCrate, Local, Location, Body, Mutability, Operand, Place, PlaceBase, PlaceElem,
@@ -18,7 +17,7 @@ use rustc::mir::{Terminator, TerminatorKind};
 use rustc::ty::query::Providers;
 use rustc::ty::{self, TyCtxt};
 
-use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder, Level};
+use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder};
 use rustc_data_structures::bit_set::BitSet;
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_data_structures::graph::dominators::Dominators;
@@ -259,8 +258,6 @@ fn do_mir_borrowck<'a, 'tcx>(
         move_error_reported: BTreeMap::new(),
         uninitialized_error_reported: Default::default(),
         errors_buffer,
-        // FIXME(Centril): throw out the migration infrastructure.
-        disable_error_downgrading: true,
         nonlexical_regioncx: regioncx,
         used_mut: Default::default(),
         used_mut_upvars: SmallVec::new(),
@@ -372,33 +369,6 @@ fn do_mir_borrowck<'a, 'tcx>(
     if !mbcx.errors_buffer.is_empty() {
         mbcx.errors_buffer.sort_by_key(|diag| diag.span.primary_span());
 
-        if !mbcx.disable_error_downgrading && tcx.migrate_borrowck() {
-            // When borrowck=migrate, check if AST-borrowck would
-            // error on the given code.
-
-            // rust-lang/rust#55492, rust-lang/rust#58776 check the base def id
-            // for errors. AST borrowck is responsible for aggregating
-            // `signalled_any_error` from all of the nested closures here.
-            let base_def_id = tcx.closure_base_def_id(def_id);
-
-            match tcx.borrowck(base_def_id).signalled_any_error {
-                SignalledError::NoErrorsSeen => {
-                    // if AST-borrowck signalled no errors, then
-                    // downgrade all the buffered MIR-borrowck errors
-                    // to warnings.
-
-                    for err in mbcx.errors_buffer.iter_mut() {
-                        downgrade_if_error(err);
-                    }
-                }
-                SignalledError::SawSomeError => {
-                    // if AST-borrowck signalled a (cancelled) error,
-                    // then we will just emit the buffered
-                    // MIR-borrowck errors as normal.
-                }
-            }
-        }
-
         for diag in mbcx.errors_buffer.drain(..) {
             mbcx.infcx.tcx.sess.diagnostic().emit_diagnostic(&diag);
         }
@@ -414,21 +384,6 @@ fn do_mir_borrowck<'a, 'tcx>(
     result
 }
 
-fn downgrade_if_error(diag: &mut Diagnostic) {
-    if diag.is_error() {
-        diag.level = Level::Warning;
-        diag.warn(
-            "this error has been downgraded to a warning for backwards \
-            compatibility with previous releases",
-        ).warn(
-            "this represents potential undefined behavior in your code and \
-            this warning will become a hard error in the future",
-        ).note(
-            "for more information, try `rustc --explain E0729`"
-        );
-    }
-}
-
 crate struct MirBorrowckCtxt<'cx, 'tcx> {
     crate infcx: &'cx InferCtxt<'cx, 'tcx>,
     body: &'cx Body<'tcx>,
@@ -489,9 +444,6 @@ crate struct MirBorrowckCtxt<'cx, 'tcx> {
     uninitialized_error_reported: FxHashSet<PlaceRef<'cx, 'tcx>>,
     /// Errors to be reported buffer
     errors_buffer: Vec<Diagnostic>,
-    /// If there are no errors reported by the HIR borrow checker, we downgrade
-    /// all NLL errors to warnings. Setting this flag disables downgrading.
-    disable_error_downgrading: bool,
     /// This field keeps track of all the local variables that are declared mut and are mutated.
     /// Used for the warning issued by an unused mutable local variable.
     used_mut: FxHashSet<Local>,
@@ -932,12 +884,6 @@ impl InitializationRequiringAction {
 }
 
 impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
-    /// If there are no errors reported by the HIR borrow checker, we downgrade
-    /// all NLL errors to warnings. Calling this disables downgrading.
-    crate fn disable_error_downgrading(&mut self)  {
-        self.disable_error_downgrading = true;
-    }
-
     /// Checks an access to the given place to see if it is allowed. Examines the set of borrows
     /// that are in scope, as well as which paths have been initialized, to ensure that (a) the
     /// place is initialized and (b) it is not borrowed in some way that would prevent this