//@aux-build: proc_macros.rs #![warn(clippy::manual_is_multiple_of)] fn main() {} #[clippy::msrv = "1.87"] fn f(a: u64, b: u64) { let _ = a.is_multiple_of(b); //~ manual_is_multiple_of let _ = (a + 1).is_multiple_of(b + 1); //~ manual_is_multiple_of let _ = !a.is_multiple_of(b); //~ manual_is_multiple_of let _ = !(a + 1).is_multiple_of(b + 1); //~ manual_is_multiple_of let _ = !a.is_multiple_of(b); //~ manual_is_multiple_of let _ = !a.is_multiple_of(b); //~ manual_is_multiple_of proc_macros::external! { let a: u64 = 23424; let _ = a % 4096 == 0; } } #[clippy::msrv = "1.86"] fn g(a: u64, b: u64) { let _ = a % b == 0; } fn needs_deref(a: &u64, b: &u64) { let _ = a.is_multiple_of(*b); //~ manual_is_multiple_of } fn closures(a: u64, b: u64) { // Do not lint, types are ambiguous at this point let cl = |a, b| a % b == 0; let _ = cl(a, b); // Do not lint, types are ambiguous at this point let cl = |a: _, b: _| a % b == 0; let _ = cl(a, b); // Type of `a` is enough let cl = |a: u64, b| a.is_multiple_of(b); //~ manual_is_multiple_of let _ = cl(a, b); // Type of `a` is enough let cl = |a: &u64, b| a.is_multiple_of(b); //~ manual_is_multiple_of let _ = cl(&a, b); // Type of `b` is not enough let cl = |a, b: u64| a % b == 0; let _ = cl(&a, b); } fn any_rem>(a: T, b: T) { // An arbitrary `Rem` implementation should not lint let _ = a % b == 0; } mod issue15103 { fn foo() -> Option { let mut n: u64 = 150_000_000; (2..).find(|p| { while n.is_multiple_of(*p) { //~^ manual_is_multiple_of n /= p; } n <= 1 }) } const fn generate_primes() -> [u64; N] { let mut result = [0; N]; if N == 0 { return result; } result[0] = 2; if N == 1 { return result; } let mut idx = 1; let mut p = 3; while idx < N { let mut j = 0; while j < idx && p % result[j] != 0 { j += 1; } if j == idx { result[idx] = p; idx += 1; } p += 1; } result } fn bar() -> u32 { let d = |n: u32| -> u32 { (1..=n / 2).filter(|i| n.is_multiple_of(*i)).sum() }; //~^ manual_is_multiple_of let d = |n| (1..=n / 2).filter(|i| n % i == 0).sum(); (1..1_000).filter(|&i| i == d(d(i)) && i != d(i)).sum() } }