From fc54e3d5f6bead1228cc85c4e14950ba6ba57461 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Mon, 3 Mar 2025 15:42:42 +0000 Subject: [PATCH 1/2] scanner: Fix loop stats in overall function stats summary We already have loop statistics ever since d2141e4c5f59683, they were just not merged into the overall per-function summary (which had an unset `has_loop` column). --- tools/scanner/src/analysis.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/scanner/src/analysis.rs b/tools/scanner/src/analysis.rs index 744ca4aec9e5..9aed4e603b09 100644 --- a/tools/scanner/src/analysis.rs +++ b/tools/scanner/src/analysis.rs @@ -44,7 +44,6 @@ impl FnStats { is_unsafe: None, has_unsafe_ops: None, has_unsupported_input: None, - // TODO: Implement this. has_loop: None, } } @@ -191,7 +190,10 @@ impl OverallStats { if !kind.is_fn() { return None; }; - Some(FnLoops::new(item.name()).collect(&item.body())) + let fn_props = FnLoops::new(item.name()).collect(&item.body()); + self.fn_stats.get_mut(&item).unwrap().has_loop = + Some(fn_props.has_iterators() || fn_props.has_loops()); + Some(fn_props) }) .partition::, _>(|props| props.has_iterators() || props.has_loops()); From 00b2d46ecb2d5d88244caeef86ea0ed98ce09e1d Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 4 Mar 2025 09:23:08 +0000 Subject: [PATCH 2/2] Rename member to loop_or_iterator --- tools/scanner/src/analysis.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/scanner/src/analysis.rs b/tools/scanner/src/analysis.rs index 9aed4e603b09..89459de72520 100644 --- a/tools/scanner/src/analysis.rs +++ b/tools/scanner/src/analysis.rs @@ -34,7 +34,7 @@ struct FnStats { is_unsafe: Option, has_unsafe_ops: Option, has_unsupported_input: Option, - has_loop: Option, + has_loop_or_iterator: Option, } impl FnStats { @@ -44,7 +44,7 @@ impl FnStats { is_unsafe: None, has_unsafe_ops: None, has_unsupported_input: None, - has_loop: None, + has_loop_or_iterator: None, } } } @@ -191,7 +191,7 @@ impl OverallStats { return None; }; let fn_props = FnLoops::new(item.name()).collect(&item.body()); - self.fn_stats.get_mut(&item).unwrap().has_loop = + self.fn_stats.get_mut(&item).unwrap().has_loop_or_iterator = Some(fn_props.has_iterators() || fn_props.has_loops()); Some(fn_props) })