Add some comments related to place op typeck
This commit is contained in:
parent
5cedf5dfba
commit
2b7d858866
2 changed files with 7 additions and 6 deletions
|
|
@ -3219,10 +3219,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
// When there is an auto mutable borrow, it is equivalent to `&mut expr`,
|
||||
// thus `expr` is ought to be typechecked with needs = [`Needs::MutPlace`].
|
||||
// However in many cases it might not be checked this way originally, e.g.
|
||||
// the receiver of a method call. We need to fix them up.
|
||||
// If there is an mutable auto-borrow, it is equivalent to `&mut <expr>`.
|
||||
// In this case implicit use of `Deref` and `Index` within `<expr>` should
|
||||
// instead be `DerefMut` and `IndexMut`, so fix those up.
|
||||
if autoborrow_mut {
|
||||
self.convert_place_derefs_to_mutable(expr);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,11 @@ use rustc_span::symbol::{sym, Ident};
|
|||
use rustc_span::Span;
|
||||
|
||||
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
/// Type-check `*oprnd_expr` with `oprnd_expr` type-checked already.
|
||||
pub(super) fn lookup_derefing(
|
||||
&self,
|
||||
expr: &hir::Expr<'_>,
|
||||
oprnd: &'tcx hir::Expr<'tcx>,
|
||||
oprnd_expr: &'tcx hir::Expr<'tcx>,
|
||||
oprnd_ty: Ty<'tcx>,
|
||||
) -> Option<Ty<'tcx>> {
|
||||
if let Some(mt) = oprnd_ty.builtin_deref(true) {
|
||||
|
|
@ -25,7 +26,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
let method = self.register_infer_ok_obligations(ok);
|
||||
if let ty::Ref(region, _, hir::Mutability::Not) = method.sig.inputs()[0].kind {
|
||||
self.apply_adjustments(
|
||||
oprnd,
|
||||
oprnd_expr,
|
||||
vec![Adjustment {
|
||||
kind: Adjust::Borrow(AutoBorrow::Ref(region, AutoBorrowMutability::Not)),
|
||||
target: method.sig.inputs()[0],
|
||||
|
|
@ -39,6 +40,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
Some(ty)
|
||||
}
|
||||
|
||||
/// Type-check `*base_expr[index_expr]` with `base_expr` and `index_expr` type-checked already.
|
||||
pub(super) fn lookup_indexing(
|
||||
&self,
|
||||
expr: &hir::Expr<'_>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue