From 9dd18a31e266b773a8c2b2308f21e7e39139754a Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sun, 5 Apr 2020 21:01:38 +0200 Subject: [PATCH] Move closure check upwards --- src/librustc_mir_build/lints.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/librustc_mir_build/lints.rs b/src/librustc_mir_build/lints.rs index 01dd575c51e..38cae5793d7 100644 --- a/src/librustc_mir_build/lints.rs +++ b/src/librustc_mir_build/lints.rs @@ -13,21 +13,20 @@ let hir_id = tcx.hir().as_local_hir_id(def_id).unwrap(); if let Some(fn_like_node) = FnLikeNode::from_node(tcx.hir().get(hir_id)) { - check_fn_for_unconditional_recursion(tcx, fn_like_node.kind(), body, def_id); + if let FnKind::Closure(_) = fn_like_node.kind() { + // closures can't recur, so they don't matter. + return; + } + + check_fn_for_unconditional_recursion(tcx, body, def_id); } } fn check_fn_for_unconditional_recursion<'tcx>( tcx: TyCtxt<'tcx>, - fn_kind: FnKind<'_>, body: &ReadOnlyBodyAndCache<'_, 'tcx>, def_id: DefId, ) { - if let FnKind::Closure(_) = fn_kind { - // closures can't recur, so they don't matter. - return; - } - let self_calls = find_blocks_calling_self(tcx, &body, def_id); let mut results = IndexVec::from_elem_n(vec![], body.basic_blocks().len()); let mut queue: VecDeque<_> = self_calls.iter().collect(); -- 2.44.0