4 #![warn(clippy::redundant_pattern_matching)]
5 #![allow(unused_must_use, clippy::needless_bool, clippy::match_like_matches_macro)]
8 if let None = None::<()> {}
10 if let Some(_) = Some(42) {}
12 if let Some(_) = Some(42) {
18 while let Some(_) = Some(42) {}
20 while let None = Some(42) {}
22 while let None = None::<()> {}
24 let mut v = vec![1, 2, 3];
25 while let Some(_) = v.pop() {
29 if None::<i32>.is_none() {}
31 if Some(42).is_some() {}
43 let _ = match None::<()> {
48 let opt = Some(false);
49 let _ = if let Some(_) = opt { true } else { false };
53 let _ = if let Some(_) = gen_opt() {
55 } else if let None = gen_opt() {
62 fn gen_opt() -> Option<()> {
70 // Methods that are unstable const should not be suggested within a const context, see issue #5697.
71 // However, in Rust 1.48.0 the methods `is_some` and `is_none` of `Option` were stabilized as const,
72 // so the following should be linted.
73 const fn issue6067() {
74 if let Some(_) = Some(42) {}
76 if let None = None::<()> {}
78 while let Some(_) = Some(42) {}
80 while let None = None::<()> {}