1 #![warn(clippy::collapsible_match)]
2 #![allow(clippy::needless_return, clippy::no_effect, clippy::single_match)]
4 fn lint_cases(opt_opt: Option<Option<u32>>, res_opt: Result<Option<u32>, String>) {
16 Ok(val) => match val {
24 if let Ok(val) = res_opt {
25 if let Some(n) = val {
30 // if let else, if let else
31 if let Ok(val) = res_opt {
32 if let Some(n) = val {
42 if let Ok(val) = res_opt {
52 if let Some(n) = val {
60 if let Ok(val) = res_opt {
72 if let Some(n) = val {
81 // None in inner match same as outer wild branch
83 Ok(val) => match val {
90 // None in outer match same as inner wild branch
92 Some(val) => match val {
100 fn negative_cases(res_opt: Result<Option<u32>, String>, res_res: Result<Result<u32, String>, String>) {
101 // no wild pattern in outer match
103 Ok(val) => match val {
110 // inner branch is not wild or None
112 Ok(val) => match val {
119 // statement before inner match
131 // statement after inner match
143 // wild branches do not match
145 Ok(val) => match val {
155 // binding used in if guard
157 Ok(val) if val.is_some() => match val {
164 // binding used in inner match body
166 Ok(val) => match val {
167 Some(_) => take(val),
173 // if guard on inner match
176 Ok(val) => match val {
177 Some(n) if make() => foo(n),
183 Ok(val) => match val {
185 _ if make() => return,
191 // differing macro contexts
202 Ok(val) => mac!(val),
213 match make::<E<Option<u32>>>() {
214 E::A(val) | E::B(val) => match val {
220 match make::<Option<E<u32>>>() {
221 Some(val) => match val {
222 E::A(val) | E::B(val) => foo(val),
227 if let Ok(val) = res_opt {
228 if let Some(n) = val {
231 println!("{:?}", val);
235 let _: &dyn std::any::Any = match &Some(Some(1)) {
240 // else branch looks the same but the binding is different
249 fn foo<T, U>(t: T) -> U {