diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2017-09-24 14:01:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-24 14:01:52 +0200 |
| commit | a8a0ec2a28081ed6e1e50766f8599c4c03e8c26a (patch) | |
| tree | e50609667b2c3e8916dbf15f7b3a451642d98932 | |
| parent | 4e377081ca7f556bf000e34457ebac2b695abdd1 (diff) | |
| parent | ed59a868dddbd56749c13bc7ddc7ea849d83e107 (diff) | |
| download | rust-a8a0ec2a28081ed6e1e50766f8599c4c03e8c26a.tar.gz rust-a8a0ec2a28081ed6e1e50766f8599c4c03e8c26a.zip | |
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.
| -rw-r--r-- | src/librustc_mir/borrow_check.rs | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/librustc_mir/borrow_check.rs b/src/librustc_mir/borrow_check.rs index 5133e528b09..10825323e41 100644 --- a/src/librustc_mir/borrow_check.rs +++ b/src/librustc_mir/borrow_check.rs @@ -408,7 +408,7 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx> self.each_borrow_involving_path( context, lvalue_span.0, flow_state, |this, _idx, borrow| { if !borrow.compatible_with(BorrowKind::Mut) { - this.report_move_out_while_borrowed(context, lvalue_span); + this.report_move_out_while_borrowed(context, lvalue_span, borrow); Control::Break } else { Control::Continue @@ -896,20 +896,28 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx> fn report_use_of_moved(&mut self, _context: Context, (lvalue, span): (&Lvalue, Span)) { - let mut err = self.tcx.cannot_act_on_uninitialized_variable( - span, "use", &self.describe_lvalue(lvalue), Origin::Mir); - // FIXME: add span_label for use of uninitialized variable - err.emit(); + self.tcx.cannot_act_on_uninitialized_variable(span, + "use", + &self.describe_lvalue(lvalue), + Origin::Mir) + .span_label(span, format!("use of possibly uninitialized `{}`", + self.describe_lvalue(lvalue))) + .emit(); } fn report_move_out_while_borrowed(&mut self, _context: Context, - (lvalue, span): (&Lvalue, Span)) { - let mut err = self.tcx.cannot_move_when_borrowed( - span, &self.describe_lvalue(lvalue), Origin::Mir); - // FIXME 1: add span_label for "borrow of `()` occurs here" - // FIXME 2: add span_label for "move out of `{}` occurs here" - err.emit(); + (lvalue, span): (&Lvalue, Span), + borrow: &BorrowData) { + self.tcx.cannot_move_when_borrowed(span, + &self.describe_lvalue(lvalue), + Origin::Mir) + .span_label(self.retrieve_borrow_span(borrow), + format!("borrow of `{}` occurs here", + self.describe_lvalue(&borrow.lvalue))) + .span_label(span, format!("move out of `{}` occurs here", + self.describe_lvalue(lvalue))) + .emit(); } fn report_use_while_mutably_borrowed(&mut self, |
