let loan_span = loan_spans.args_or_use();
let tcx = self.infcx.tcx;
- let mut err = if loan.kind == BorrowKind::Shallow {
- tcx.cannot_mutate_in_match_guard(
+ if loan.kind == BorrowKind::Shallow {
+ let mut err = tcx.cannot_mutate_in_match_guard(
span,
loan_span,
&self.describe_place(place).unwrap_or_else(|| "_".to_owned()),
"assign",
Origin::Mir,
- )
- } else {
- tcx.cannot_assign_to_borrowed(
- span,
- loan_span,
- &self.describe_place(place).unwrap_or_else(|| "_".to_owned()),
- Origin::Mir,
- )
- };
+ );
+ loan_spans.var_span_label(
+ &mut err,
+ format!("borrow occurs due to use{}", loan_spans.describe()),
+ );
+
+ err.buffer(&mut self.errors_buffer);
+
+ return;
+ }
+
+ let mut err = tcx.cannot_assign_to_borrowed(
+ span,
+ loan_span,
+ &self.describe_place(place).unwrap_or_else(|| "_".to_owned()),
+ Origin::Mir,
+ );
loan_spans.var_span_label(
&mut err,