Skip to content

Commit a8a0ec2

Browse files
Rollup merge of #44795 - KiChjang:mir-err-notes, r=arielb1
MIR borrowck: Add span labels for E0381 and E0505 Corresponds to `report_use_of_moved` and `report_move_out_when_borrowed`. Part of #44596.
2 parents 4e37708 + ed59a86 commit a8a0ec2

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

src/librustc_mir/borrow_check.rs

+19-11
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx>
408408
self.each_borrow_involving_path(
409409
context, lvalue_span.0, flow_state, |this, _idx, borrow| {
410410
if !borrow.compatible_with(BorrowKind::Mut) {
411-
this.report_move_out_while_borrowed(context, lvalue_span);
411+
this.report_move_out_while_borrowed(context, lvalue_span, borrow);
412412
Control::Break
413413
} else {
414414
Control::Continue
@@ -896,20 +896,28 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx>
896896
fn report_use_of_moved(&mut self,
897897
_context: Context,
898898
(lvalue, span): (&Lvalue, Span)) {
899-
let mut err = self.tcx.cannot_act_on_uninitialized_variable(
900-
span, "use", &self.describe_lvalue(lvalue), Origin::Mir);
901-
// FIXME: add span_label for use of uninitialized variable
902-
err.emit();
899+
self.tcx.cannot_act_on_uninitialized_variable(span,
900+
"use",
901+
&self.describe_lvalue(lvalue),
902+
Origin::Mir)
903+
.span_label(span, format!("use of possibly uninitialized `{}`",
904+
self.describe_lvalue(lvalue)))
905+
.emit();
903906
}
904907

905908
fn report_move_out_while_borrowed(&mut self,
906909
_context: Context,
907-
(lvalue, span): (&Lvalue, Span)) {
908-
let mut err = self.tcx.cannot_move_when_borrowed(
909-
span, &self.describe_lvalue(lvalue), Origin::Mir);
910-
// FIXME 1: add span_label for "borrow of `()` occurs here"
911-
// FIXME 2: add span_label for "move out of `{}` occurs here"
912-
err.emit();
910+
(lvalue, span): (&Lvalue, Span),
911+
borrow: &BorrowData) {
912+
self.tcx.cannot_move_when_borrowed(span,
913+
&self.describe_lvalue(lvalue),
914+
Origin::Mir)
915+
.span_label(self.retrieve_borrow_span(borrow),
916+
format!("borrow of `{}` occurs here",
917+
self.describe_lvalue(&borrow.lvalue)))
918+
.span_label(span, format!("move out of `{}` occurs here",
919+
self.describe_lvalue(lvalue)))
920+
.emit();
913921
}
914922

915923
fn report_use_while_mutably_borrowed(&mut self,

0 commit comments

Comments
 (0)