Auto merge of #89861 - nbdd0121:closure, r=wesleywiser
Closure capture cleanup & refactor Follow up of #89648 Each commit is self-contained and the rationale/changes are documented in the commit message, so it's advisable to review commit by commit. The code is significantly cleaner (at least IMO), but that could have some perf implication, so I'd suggest a perf run. r? `@wesleywiser` cc `@arora-aman`
This commit is contained in:
commit
22e491ac7e
23 changed files with 324 additions and 419 deletions
|
@ -266,7 +266,7 @@ fn to_upvars_resolved_place_builder<'a, 'tcx>(
|
|||
// we need to deref it
|
||||
upvar_resolved_place_builder = match capture.info.capture_kind {
|
||||
ty::UpvarCapture::ByRef(_) => upvar_resolved_place_builder.deref(),
|
||||
ty::UpvarCapture::ByValue(_) => upvar_resolved_place_builder,
|
||||
ty::UpvarCapture::ByValue => upvar_resolved_place_builder,
|
||||
};
|
||||
|
||||
let next_projection = capture.place.projections.len();
|
||||
|
|
|
@ -930,7 +930,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
let mut projs = closure_env_projs.clone();
|
||||
projs.push(ProjectionElem::Field(Field::new(i), ty));
|
||||
match capture {
|
||||
ty::UpvarCapture::ByValue(_) => {}
|
||||
ty::UpvarCapture::ByValue => {}
|
||||
ty::UpvarCapture::ByRef(..) => {
|
||||
projs.push(ProjectionElem::Deref);
|
||||
}
|
||||
|
|
|
@ -1108,9 +1108,9 @@ impl<'tcx> Cx<'tcx> {
|
|||
let temp_lifetime = self.region_scope_tree.temporary_scope(closure_expr.hir_id.local_id);
|
||||
|
||||
match upvar_capture {
|
||||
ty::UpvarCapture::ByValue(_) => captured_place_expr,
|
||||
ty::UpvarCapture::ByValue => captured_place_expr,
|
||||
ty::UpvarCapture::ByRef(upvar_borrow) => {
|
||||
let borrow_kind = match upvar_borrow.kind {
|
||||
let borrow_kind = match upvar_borrow {
|
||||
ty::BorrowKind::ImmBorrow => BorrowKind::Shared,
|
||||
ty::BorrowKind::UniqueImmBorrow => BorrowKind::Unique,
|
||||
ty::BorrowKind::MutBorrow => BorrowKind::Mut { allow_two_phase_borrow: false },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue