4 #![warn(clippy::redundant_pattern_matching)]
8 clippy::match_like_matches_macro,
9 clippy::if_same_then_else
13 if let None = None::<()> {}
15 if let Some(_) = Some(42) {}
17 if let Some(_) = Some(42) {
23 while let Some(_) = Some(42) {}
25 while let None = Some(42) {}
27 while let None = None::<()> {}
29 let mut v = vec![1, 2, 3];
30 while let Some(_) = v.pop() {
34 if None::<i32>.is_none() {}
36 if Some(42).is_some() {}
48 let _ = match None::<()> {
53 let opt = Some(false);
54 let _ = if let Some(_) = opt { true } else { false };
58 let _ = if let Some(_) = gen_opt() {
60 } else if let None = gen_opt() {
67 fn gen_opt() -> Option<()> {
75 // Methods that are unstable const should not be suggested within a const context, see issue #5697.
76 // However, in Rust 1.48.0 the methods `is_some` and `is_none` of `Option` were stabilized as const,
77 // so the following should be linted.
78 const fn issue6067() {
79 if let Some(_) = Some(42) {}
81 if let None = None::<()> {}
83 while let Some(_) = Some(42) {}
85 while let None = None::<()> {}