Skip to content

Commit 6b49f4d

Browse files
committed
Run the analysis process only once per closure, on the way up the tree.
This was the intention before but silly coding caused it to run twice if there are nested closures.
1 parent 1e2677b commit 6b49f4d

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

src/librustc_typeck/check/upvar.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,8 @@ impl<'a,'tcx> AdjustBorrowKind<'a,'tcx> {
183183
* Analysis starting point.
184184
*/
185185

186-
self.visit_block(body);
186+
debug!("analyze_closure(id={:?}, body.id={:?})", id, body.id);
187187

188-
debug!("analyzing closure `{}` with fn body id `{}`", id, body.id);
189188

190189
let mut euv = euv::ExprUseVisitor::new(self, self.fcx.infcx());
191190
euv.walk_fn(decl, body);
@@ -485,8 +484,8 @@ impl<'a, 'tcx, 'v> Visitor<'v> for AdjustBorrowKind<'a, 'tcx> {
485484
// ignore nested fn items
486485
}
487486
visit::FkFnBlock => {
488-
self.analyze_closure(id, decl, body);
489487
visit::walk_fn(self, fn_kind, decl, body, span);
488+
self.analyze_closure(id, span, decl, body);
490489
}
491490
}
492491
}

0 commit comments

Comments
 (0)