Address review comments: make label shorter

This commit is contained in:
Esteban Küber 2018-01-01 22:10:04 -08:00
parent be6734a7e7
commit 6c506d4c71
2 changed files with 16 additions and 9 deletions

View File

@ -705,12 +705,6 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> {
}, " (into closure)"), }, " (into closure)"),
}; };
let extra_move_label = if need_note {
format!(" because it has type `{}`, which does not implement the `Copy` trait",
moved_lp.ty)
} else {
String::new()
};
// Annotate the use and the move in the span. Watch out for // Annotate the use and the move in the span. Watch out for
// the case where the use and the move are the same. This // the case where the use and the move are the same. This
// means the use is in a loop. // means the use is in a loop.
@ -720,10 +714,22 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> {
format!("value moved{} here in previous iteration of loop{}", format!("value moved{} here in previous iteration of loop{}",
move_note, move_note,
extra_move_label)); extra_move_label));
if need_note {
err.note(&format!("value moved because it has type `{}`, \
which does not implement the `Copy` trait",
moved_lp.ty)
}
err err
} else { } else {
err.span_label(use_span, format!("value {} here after move", verb_participle)) err.span_label(use_span, format!("value {} here after move", verb_participle));
.span_label(move_span, format!("value moved{} here{}", move_note, extra_move_label)); let extra_move_label = if need_note {
&format!(" because it has type `{}`, which does not implement the `Copy` trait",
moved_lp.ty)
} else {
""
};
err.span_label(move_span,format!("value moved{} here{}", move_note, extra_move_label));
err err
}; };

View File

@ -10,7 +10,8 @@ error[E0382]: use of moved value: `(maybe as std::prelude::v1::Some).0`
--> $DIR/issue-41962.rs:15:21 --> $DIR/issue-41962.rs:15:21
| |
15 | if let Some(thing) = maybe { 15 | if let Some(thing) = maybe {
| ^^^^^ value moved here in previous iteration of loop because it has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait | ^^^^^ value moved here in previous iteration of loop
= note: value moved because it has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
error: aborting due to 2 previous errors error: aborting due to 2 previous errors