mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-24 05:33:41 +00:00
Add comments based on code review feedback
This commit is contained in:
parent
9f0f46fa4d
commit
170b027022
@ -371,6 +371,14 @@ impl<'a, 'tcx> Visitor<'tcx> for InteriorVisitor<'a, 'tcx> {
|
||||
|
||||
debug!("is_borrowed_temporary: {:?}", self.drop_ranges.is_borrowed_temporary(expr));
|
||||
|
||||
// Typically, the value produced by an expression is consumed by its parent in some way,
|
||||
// so we only have to check if the parent contains a yield (note that the parent may, for
|
||||
// example, store the value into a local variable, but then we already consider local
|
||||
// variables to be live across their scope).
|
||||
//
|
||||
// However, in the case of temporary values, we are going to store the value into a
|
||||
// temporary on the stack that is live for the current temporary scope and then return a
|
||||
// reference to it. That value may be live across the entire temporary scope.
|
||||
let scope = if self.drop_ranges.is_borrowed_temporary(expr) {
|
||||
self.region_scope_tree.temporary_scope(expr.hir_id.local_id)
|
||||
} else {
|
||||
|
@ -51,8 +51,8 @@ pub trait Delegate<'tcx> {
|
||||
/// The value found at `place` is being copied.
|
||||
/// `diag_expr_id` is the id used for diagnostics (see `consume` for more details).
|
||||
fn copy(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: hir::HirId) {
|
||||
// In most cases, treating a copy as a borrow is the right thing, so we forward
|
||||
// this to the borrow callback by default.
|
||||
// In most cases, copying data from `x` is equivalent to doing `*&x`, so by default
|
||||
// we treat a copy of `x` as a borrow of `x`.
|
||||
self.borrow(place_with_id, diag_expr_id, ty::BorrowKind::ImmBorrow, false)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user