| #![allow(non_fmt_panics, clippy::needless_bool)] |
| |
| macro_rules! assert_const { |
| ($len:expr) => { |
| assert!($len > 0); |
| debug_assert!($len < 0); |
| }; |
| } |
| fn main() { |
| assert!(true); |
| //~^ ERROR: `assert!(true)` will be optimized out by the compiler |
| assert!(false); |
| //~^ ERROR: `assert!(false)` should probably be replaced |
| assert!(true, "true message"); |
| //~^ ERROR: `assert!(true)` will be optimized out by the compiler |
| assert!(false, "false message"); |
| //~^ ERROR: `assert!(false, ..)` should probably be replaced |
| |
| let msg = "panic message"; |
| assert!(false, "{}", msg.to_uppercase()); |
| //~^ ERROR: `assert!(false, ..)` should probably be replaced |
| |
| const B: bool = true; |
| assert!(B); |
| //~^ ERROR: `assert!(true)` will be optimized out by the compiler |
| |
| const C: bool = false; |
| assert!(C); |
| //~^ ERROR: `assert!(false)` should probably be replaced |
| assert!(C, "C message"); |
| //~^ ERROR: `assert!(false, ..)` should probably be replaced |
| |
| debug_assert!(true); |
| //~^ ERROR: `debug_assert!(true)` will be optimized out by the compiler |
| // Don't lint this, since there is no better way for expressing "Only panic in debug mode". |
| debug_assert!(false); // #3948 |
| assert_const!(3); |
| assert_const!(-1); |
| |
| // Don't lint if based on `cfg!(..)`: |
| assert!(cfg!(feature = "hey") || cfg!(not(feature = "asdf"))); |
| |
| let flag: bool = cfg!(not(feature = "asdf")); |
| assert!(flag); |
| |
| const CFG_FLAG: &bool = &cfg!(feature = "hey"); |
| assert!(!CFG_FLAG); |
| |
| const _: () = assert!(true); |
| //~^ ERROR: `assert!(true)` will be optimized out by the compiler |
| |
| // Don't lint if the value is dependent on a defined constant: |
| const N: usize = 1024; |
| const _: () = assert!(N.is_power_of_two()); |
| } |