1 #![warn(clippy::collapsible_match)]
3 clippy::equatable_if_let,
4 clippy::needless_return,
7 clippy::uninlined_format_args
10 fn lint_cases(opt_opt: Option<Option<u32>>, res_opt: Result<Option<u32>, String>) {
11 // match without block
13 Ok(val) => match val {
22 Ok(val) => match val {
30 if let Ok(val) = res_opt {
31 if let Some(n) = val {
36 // if let else, if let else
37 if let Ok(val) = res_opt {
38 if let Some(n) = val {
48 if let Ok(val) = res_opt {
58 if let Some(n) = val {
66 if let Ok(val) = res_opt {
78 if let Some(n) = val {
87 // None in inner match same as outer wild branch
89 Ok(val) => match val {
96 // None in outer match same as inner wild branch
98 Some(val) => match val {
106 fn negative_cases(res_opt: Result<Option<u32>, String>, res_res: Result<Result<u32, String>, String>) {
107 while let Some(x) = make() {
112 // no wild pattern in outer match
114 Ok(val) => match val {
121 // inner branch is not wild or None
123 Ok(val) => match val {
130 // statement before inner match
142 // statement after inner match
154 // wild branches do not match
156 Ok(val) => match val {
166 // binding used in if guard
168 Ok(val) if val.is_some() => match val {
175 // binding used in inner match body
177 Ok(val) => match val {
178 Some(_) => take(val),
184 // if guard on inner match
187 Ok(val) => match val {
188 Some(n) if make() => foo(n),
194 Ok(val) => match val {
196 _ if make() => return,
202 // differing macro contexts
213 Ok(val) => mac!(val),
224 match make::<E<Option<u32>>>() {
225 E::A(val) | E::B(val) => match val {
231 match make::<Option<E<u32>>>() {
232 Some(val) => match val {
233 E::A(val) | E::B(val) => foo(val),
238 if let Ok(val) = res_opt {
239 if let Some(n) = val {
242 println!("{:?}", val);
246 let _: &dyn std::any::Any = match &Some(Some(1)) {
251 // else branch looks the same but the binding is different
260 fn foo<T, U>(t: T) -> U {