Note when a a move/borrow error is caused by a deref coercion
Fixes #73268 When a deref coercion occurs, we may end up with a move error if the base value has been partially moved out of. However, we do not indicate anywhere that a deref coercion is occuring, resulting in an error message with a confusing span. This PR adds an explicit note to move errors when a deref coercion is involved. We mention the name of the type that the deref-coercion resolved to, as well as the `Deref::Target` associated type being used.
This commit is contained in:
parent
a1947b3f9e
commit
d18b4bb7a7
23 changed files with 250 additions and 54 deletions
|
@ -606,8 +606,11 @@ impl<'a, 'tcx> Lift<'tcx> for ty::adjustment::Adjust<'a> {
|
|||
impl<'a, 'tcx> Lift<'tcx> for ty::adjustment::OverloadedDeref<'a> {
|
||||
type Lifted = ty::adjustment::OverloadedDeref<'tcx>;
|
||||
fn lift_to_tcx(&self, tcx: TyCtxt<'tcx>) -> Option<Self::Lifted> {
|
||||
tcx.lift(&self.region)
|
||||
.map(|region| ty::adjustment::OverloadedDeref { region, mutbl: self.mutbl })
|
||||
tcx.lift(&self.region).map(|region| ty::adjustment::OverloadedDeref {
|
||||
region,
|
||||
mutbl: self.mutbl,
|
||||
span: self.span,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue