]> git.lizzy.rs Git - rust.git/commitdiff
Have `add_explanation_to_diagnostic` also take `Mir` as parameter.
authorFelix S. Klock II <pnkfelix@pnkfx.org>
Fri, 28 Sep 2018 10:23:40 +0000 (12:23 +0200)
committerFelix S. Klock II <pnkfelix@pnkfx.org>
Fri, 5 Oct 2018 08:47:19 +0000 (10:47 +0200)
This is preparation for allowing the `BorrowExplanation` carry things
like `mir::Location` or `mir::Local` and still be able to generate
usable diagnostic text.

src/librustc_mir/borrow_check/error_reporting.rs
src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs

index 45435c64749e2edcb4f41dcaee95514085b0d90e..5dcab038baeb195f18c10ae4b72607d5310b5b97 100644 (file)
@@ -262,7 +262,7 @@ pub(super) fn report_move_out_while_borrowed(
         move_spans.var_span_label(&mut err, "move occurs due to use in closure");
 
         self.explain_why_borrow_contains_point(context, borrow, None)
-            .add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+            .add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
         err.buffer(&mut self.errors_buffer);
     }
 
@@ -299,7 +299,7 @@ pub(super) fn report_use_while_mutably_borrowed(
         });
 
         self.explain_why_borrow_contains_point(context, borrow, None)
-            .add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+            .add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
         err.buffer(&mut self.errors_buffer);
     }
 
@@ -483,7 +483,7 @@ pub(super) fn report_conflicting_borrow(
         }
 
         self.explain_why_borrow_contains_point(context, issued_borrow, None)
-            .add_explanation_to_diagnostic(self.infcx.tcx, &mut err, first_borrow_desc.to_string());
+            .add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, first_borrow_desc.to_string());
 
         err.buffer(&mut self.errors_buffer);
     }
@@ -638,7 +638,7 @@ fn report_local_value_does_not_live_long_enough(
 
             if let BorrowExplanation::MustBeValidFor(..) = explanation {
             } else {
-                explanation.add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+                explanation.add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
             }
         } else {
             err.span_label(borrow_span, "borrowed value does not live long enough");
@@ -649,7 +649,7 @@ fn report_local_value_does_not_live_long_enough(
 
             borrow_spans.args_span_label(&mut err, "value captured here");
 
-            explanation.add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+            explanation.add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
         }
 
         err
@@ -709,7 +709,7 @@ pub(super) fn report_borrow_conflicts_with_destructor(
             _ => {}
         }
 
-        explanation.add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+        explanation.add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
 
         err.buffer(&mut self.errors_buffer);
     }
@@ -776,7 +776,7 @@ fn report_temporary_value_does_not_live_long_enough(
             }
             _ => {}
         }
-        explanation.add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+        explanation.add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
 
         borrow_spans.args_span_label(&mut err, "value captured here");
 
@@ -913,7 +913,7 @@ pub(super) fn report_illegal_mutation_of_borrowed(
         loan_spans.var_span_label(&mut err, "borrow occurs due to use in closure");
 
         self.explain_why_borrow_contains_point(context, loan, None)
-            .add_explanation_to_diagnostic(self.infcx.tcx, &mut err, String::new());
+            .add_explanation_to_diagnostic(self.infcx.tcx, self.mir, &mut err, String::new());
 
         err.buffer(&mut self.errors_buffer);
     }
index d2f707ed2e8e9cc76880b5563a72df3b57ccf4b3..3319113aec074fedf0d28e0e797918a9e6ddb010 100644 (file)
@@ -13,7 +13,7 @@
 use borrow_check::nll::region_infer::Cause;
 use borrow_check::{Context, MirBorrowckCtxt, WriteKind};
 use rustc::ty::{Region, TyCtxt};
-use rustc::mir::{FakeReadCause, Location, Operand, Place, StatementKind, TerminatorKind};
+use rustc::mir::{FakeReadCause, Location, Mir, Operand, Place, StatementKind, TerminatorKind};
 use rustc_errors::DiagnosticBuilder;
 use syntax_pos::Span;
 use syntax_pos::symbol::Symbol;
@@ -40,6 +40,7 @@ impl<'tcx> BorrowExplanation<'tcx> {
     pub(in borrow_check) fn add_explanation_to_diagnostic<'cx, 'gcx>(
         &self,
         tcx: TyCtxt<'cx, 'gcx, 'tcx>,
+        _mir: &Mir<'tcx>,
         err: &mut DiagnosticBuilder<'_>,
         borrow_desc: String,
     ) {