rust/tests/ui/eq_op_macros.rs
2023-08-22 17:18:11 +02:00

66 lines
1.9 KiB
Rust

#![warn(clippy::eq_op)]
#![allow(clippy::useless_vec)]
// lint also in macro definition
macro_rules! assert_in_macro_def {
() => {
let a = 42;
assert_eq!(a, a);
assert_ne!(a, a);
debug_assert_eq!(a, a);
debug_assert_ne!(a, a);
};
}
// lint identical args in assert-like macro invocations (see #3574)
fn main() {
assert_in_macro_def!();
let a = 1;
let b = 2;
// lint identical args in `assert_eq!`
assert_eq!(a, a);
//~^ ERROR: identical args used in this `assert_eq!` macro call
assert_eq!(a + 1, a + 1);
//~^ ERROR: identical args used in this `assert_eq!` macro call
// ok
assert_eq!(a, b);
assert_eq!(a, a + 1);
assert_eq!(a + 1, b + 1);
// lint identical args in `assert_ne!`
assert_ne!(a, a);
//~^ ERROR: identical args used in this `assert_ne!` macro call
assert_ne!(a + 1, a + 1);
//~^ ERROR: identical args used in this `assert_ne!` macro call
// ok
assert_ne!(a, b);
assert_ne!(a, a + 1);
assert_ne!(a + 1, b + 1);
// lint identical args in `debug_assert_eq!`
debug_assert_eq!(a, a);
//~^ ERROR: identical args used in this `debug_assert_eq!` macro call
debug_assert_eq!(a + 1, a + 1);
//~^ ERROR: identical args used in this `debug_assert_eq!` macro call
// ok
debug_assert_eq!(a, b);
debug_assert_eq!(a, a + 1);
debug_assert_eq!(a + 1, b + 1);
// lint identical args in `debug_assert_ne!`
debug_assert_ne!(a, a);
//~^ ERROR: identical args used in this `debug_assert_ne!` macro call
debug_assert_ne!(a + 1, a + 1);
//~^ ERROR: identical args used in this `debug_assert_ne!` macro call
// ok
debug_assert_ne!(a, b);
debug_assert_ne!(a, a + 1);
debug_assert_ne!(a + 1, b + 1);
let my_vec = vec![1; 5];
let mut my_iter = my_vec.iter();
assert_ne!(my_iter.next(), my_iter.next());
}