Have add_explanation_to_diagnostic
also take Mir
as parameter.
This is preparation for allowing the `BorrowExplanation` carry things like `mir::Location` or `mir::Local` and still be able to generate usable diagnostic text.
This commit is contained in:
parent
8532c1896d
commit
9eebe77a86
2 changed files with 10 additions and 9 deletions
|
@ -262,7 +262,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
});
|
||||
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
}
|
||||
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
_ => {}
|
||||
}
|
||||
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
}
|
||||
_ => {}
|
||||
}
|
||||
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 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
|||
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);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use borrow_check::error_reporting::UseSpans;
|
|||
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,
|
||||
) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue