| // run-rustfix |
| |
| #![warn(clippy::all)] |
| #![warn(clippy::redundant_pattern_matching)] |
| #![allow( |
| clippy::unit_arg, |
| unused_must_use, |
| clippy::needless_bool, |
| clippy::match_like_matches_macro, |
| deprecated |
| )] |
| |
| fn main() { |
| let result: Result<usize, usize> = Err(5); |
| if result.is_ok() {} |
| |
| if Ok::<i32, i32>(42).is_ok() {} |
| |
| if Err::<i32, i32>(42).is_err() {} |
| |
| while Ok::<i32, i32>(10).is_ok() {} |
| |
| while Ok::<i32, i32>(10).is_err() {} |
| |
| if Ok::<i32, i32>(42).is_ok() {} |
| |
| if Err::<i32, i32>(42).is_err() {} |
| |
| if let Ok(x) = Ok::<i32, i32>(42) { |
| println!("{}", x); |
| } |
| |
| Ok::<i32, i32>(42).is_ok(); |
| |
| Ok::<i32, i32>(42).is_err(); |
| |
| Err::<i32, i32>(42).is_err(); |
| |
| Err::<i32, i32>(42).is_ok(); |
| |
| let _ = if Ok::<usize, ()>(4).is_ok() { true } else { false }; |
| |
| issue5504(); |
| issue6067(); |
| issue6065(); |
| |
| let _ = if gen_res().is_ok() { |
| 1 |
| } else if gen_res().is_err() { |
| 2 |
| } else { |
| 3 |
| }; |
| } |
| |
| fn gen_res() -> Result<(), ()> { |
| Ok(()) |
| } |
| |
| macro_rules! m { |
| () => { |
| Some(42u32) |
| }; |
| } |
| |
| fn issue5504() { |
| fn result_opt() -> Result<Option<i32>, i32> { |
| Err(42) |
| } |
| |
| fn try_result_opt() -> Result<i32, i32> { |
| while r#try!(result_opt()).is_some() {} |
| if r#try!(result_opt()).is_some() {} |
| Ok(42) |
| } |
| |
| try_result_opt(); |
| |
| if m!().is_some() {} |
| while m!().is_some() {} |
| } |
| |
| fn issue6065() { |
| macro_rules! if_let_in_macro { |
| ($pat:pat, $x:expr) => { |
| if let Some($pat) = $x {} |
| }; |
| } |
| |
| // shouldn't be linted |
| if_let_in_macro!(_, Some(42)); |
| } |
| |
| // Methods that are unstable const should not be suggested within a const context, see issue #5697. |
| // However, in Rust 1.48.0 the methods `is_ok` and `is_err` of `Result` were stabilized as const, |
| // so the following should be linted. |
| const fn issue6067() { |
| if Ok::<i32, i32>(42).is_ok() {} |
| |
| if Err::<i32, i32>(42).is_err() {} |
| |
| while Ok::<i32, i32>(10).is_ok() {} |
| |
| while Ok::<i32, i32>(10).is_err() {} |
| |
| Ok::<i32, i32>(42).is_ok(); |
| |
| Err::<i32, i32>(42).is_err(); |
| } |