Auto merge of #108692 - nnethercote:dont-call-temporary_scope-twice, r=cjgillot
Don't call `temporary_scope` twice. `mirror_expr_inner` calls `temporary_scope`. It then calls `make_mirror_unadjusted` which makes an identical call to `temporary_scope`. This commit changes the `mirror_expr_inner` to get the `temp_lifetime` out of the expression produced by `make_mirror_unadjusted`, similar to how it currently gets the type. r? `@cjgillot`
This commit is contained in:
commit
b1719530f4
@ -34,8 +34,6 @@ pub(crate) fn mirror_exprs(&mut self, exprs: &'tcx [hir::Expr<'tcx>]) -> Box<[Ex
|
||||
|
||||
#[instrument(level = "trace", skip(self, hir_expr))]
|
||||
pub(super) fn mirror_expr_inner(&mut self, hir_expr: &'tcx hir::Expr<'tcx>) -> ExprId {
|
||||
let temp_lifetime =
|
||||
self.rvalue_scopes.temporary_scope(self.region_scope_tree, hir_expr.hir_id.local_id);
|
||||
let expr_scope =
|
||||
region::Scope { id: hir_expr.hir_id.local_id, data: region::ScopeData::Node };
|
||||
|
||||
@ -68,7 +66,7 @@ pub(super) fn mirror_expr_inner(&mut self, hir_expr: &'tcx hir::Expr<'tcx>) -> E
|
||||
|
||||
// Next, wrap this up in the expr's scope.
|
||||
expr = Expr {
|
||||
temp_lifetime,
|
||||
temp_lifetime: expr.temp_lifetime,
|
||||
ty: expr.ty,
|
||||
span: hir_expr.span,
|
||||
kind: ExprKind::Scope {
|
||||
@ -83,7 +81,7 @@ pub(super) fn mirror_expr_inner(&mut self, hir_expr: &'tcx hir::Expr<'tcx>) -> E
|
||||
self.region_scope_tree.opt_destruction_scope(hir_expr.hir_id.local_id)
|
||||
{
|
||||
expr = Expr {
|
||||
temp_lifetime,
|
||||
temp_lifetime: expr.temp_lifetime,
|
||||
ty: expr.ty,
|
||||
span: hir_expr.span,
|
||||
kind: ExprKind::Scope {
|
||||
|
Loading…
Reference in New Issue
Block a user