rust/tests/ui/zero_repeat_side_effects.fixed

73 lines
1.4 KiB
Rust
Raw Normal View History

#![warn(clippy::zero_repeat_side_effects)]
#![allow(clippy::unnecessary_operation)]
#![allow(clippy::useless_vec)]
#![allow(clippy::needless_late_init)]
fn f() -> i32 {
println!("side effect");
10
}
fn main() {
const N: usize = 0;
const M: usize = 1;
// should trigger
// on arrays
f(); let a: [i32; 0] = [];
let mut b;
f(); b = [] as [i32; 0];
// on vecs
2024-07-20 00:50:36 -05:00
// vecs dont support inferring value of consts
f(); let c: std::vec::Vec<i32> = vec![];
let d;
f(); d = vec![] as std::vec::Vec<i32>;
// for macros
println!("side effect"); let e: [(); 0] = [];
// for nested calls
{ f() }; let g: [i32; 0] = [];
// as function param
drop({ f(); vec![] as std::vec::Vec<i32> });
// when singled out/not part of assignment/local
{ f(); vec![] as std::vec::Vec<i32> };
{ f(); [] as [i32; 0] };
// should not trigger
let a = [f(); N];
b = [f(); N];
[f(); N];
// on arrays with > 0 repeat
let a = [f(); 1];
let a = [f(); M];
let mut b;
b = [f(); 1];
b = [f(); M];
// on vecs with > 0 repeat
let c = vec![f(); 1];
let d;
d = vec![f(); 1];
// as function param
drop(vec![f(); 1]);
}
2024-07-17 06:23:40 -05:00
macro_rules! LEN {
() => {
0
};
2024-07-17 06:23:40 -05:00
}
fn issue_13110() {
let _data = [f(); LEN!()];
2024-07-17 06:23:40 -05:00
const LENGTH: usize = LEN!();
let _data = [f(); LENGTH];
2024-07-17 06:23:40 -05:00
}