From dd4b5cbaa1d0a768c14f688062abc151d6eedb50 Mon Sep 17 00:00:00 2001 From: shreyymeow Date: Mon, 8 Dec 2025 20:18:39 +0530 Subject: [PATCH] loops: Fix multi-part counter detection in explicit_counter_loop and manual_memcpy --- .../src/loops/explicit_counter_loop.rs | 90 ++++++--- clippy_lints/src/loops/manual_memcpy.rs | 18 +- clippy_lints/src/loops/utils.rs | 76 +++---- tests/ui/explicit_counter_loop.rs | 3 - tests/ui/explicit_counter_loop.stderr | 187 +++++++++++++++--- 5 files changed, 249 insertions(+), 125 deletions(-) diff --git a/clippy_lints/src/loops/explicit_counter_loop.rs b/clippy_lints/src/loops/explicit_counter_loop.rs index 9aa4d2f0adc2..983804713e44 100644 --- a/clippy_lints/src/loops/explicit_counter_loop.rs +++ b/clippy_lints/src/loops/explicit_counter_loop.rs @@ -1,5 +1,5 @@ use super::{EXPLICIT_COUNTER_LOOP, IncrementVisitor, InitializeVisitor, make_iterator_snippet}; -use clippy_utils::diagnostics::{span_lint_and_sugg, span_lint_and_then}; +use clippy_utils::diagnostics::span_lint_and_then; use clippy_utils::source::snippet_with_applicability; use clippy_utils::{get_enclosing_block, is_integer_const}; use rustc_ast::Label; @@ -12,6 +12,8 @@ use rustc_middle::ty::{self, Ty, UintTy}; // To trigger the EXPLICIT_COUNTER_LOOP lint, a variable must be // incremented exactly once in the loop body, and initialized to zero // at the start of the loop. +// ... (imports and prelude) + pub(super) fn check<'tcx>( cx: &LateContext<'tcx>, pat: &'tcx Pat<'_>, @@ -20,66 +22,90 @@ pub(super) fn check<'tcx>( expr: &'tcx Expr<'_>, label: Option