From 8faa938a604895ddb7138e017ac4dcbe354eefba Mon Sep 17 00:00:00 2001 From: Jaeyong Sung Date: Sun, 13 Feb 2022 03:53:23 +0900 Subject: [PATCH] fix only_used_in_recursion not to lint when unused_variable --- clippy_lints/src/only_used_in_recursion.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/clippy_lints/src/only_used_in_recursion.rs b/clippy_lints/src/only_used_in_recursion.rs index ace00333b..81c40a6a3 100644 --- a/clippy_lints/src/only_used_in_recursion.rs +++ b/clippy_lints/src/only_used_in_recursion.rs @@ -126,8 +126,20 @@ impl<'tcx> LateLintPass<'tcx> for OnlyUsedInRecursion { } } + let mut pre_order = FxHashMap::default(); + + visitor.graph.iter().for_each(|(_, next)| { + next.iter().for_each(|i| { + *pre_order.entry(*i).or_insert(0) += 1; + }); + }); + for (id, span, ident) in param_span { - if !visitor.has_side_effect.contains(&id) { + // if the variable is not used in recursion, it would be marked as unused + if !visitor.has_side_effect.contains(&id) + && *pre_order.get(&id).unwrap_or(&0) > 0 + && visitor.graph.contains_key(&id) + { span_lint_and_sugg( cx, ONLY_USED_IN_RECURSION,