| //@aux-build:proc_macro_suspicious_else_formatting.rs |
| |
| #![warn(clippy::suspicious_else_formatting, clippy::possible_missing_else)] |
| #![allow( |
| clippy::if_same_then_else, |
| clippy::let_unit_value, |
| clippy::needless_ifs, |
| clippy::needless_else |
| )] |
| |
| extern crate proc_macro_suspicious_else_formatting; |
| use proc_macro_suspicious_else_formatting::DeriveBadSpan; |
| |
| fn foo() -> bool { |
| true |
| } |
| |
| #[rustfmt::skip] |
| fn main() { |
| // weird `else` formatting: |
| if foo() { |
| } { |
| //~^ possible_missing_else |
| } |
| |
| if foo() { |
| } if foo() { |
| //~^ possible_missing_else |
| } |
| |
| let _ = { // if as the last expression |
| let _ = 0; |
| |
| if foo() { |
| } if foo() { |
| //~^ possible_missing_else |
| } |
| else { |
| } |
| }; |
| |
| let _ = { // if in the middle of a block |
| if foo() { |
| } if foo() { |
| //~^ possible_missing_else |
| } |
| else { |
| } |
| |
| let _ = 0; |
| }; |
| |
| if foo() { |
| } else |
| { |
| } |
| //~^^^ suspicious_else_formatting |
| |
| // This is fine, though weird. Allman style braces on the else. |
| if foo() { |
| } |
| else |
| { |
| } |
| |
| if foo() { |
| } else |
| if foo() { // the span of the above error should continue here |
| } |
| //~^^^ suspicious_else_formatting |
| |
| if foo() { |
| } |
| else |
| if foo() { // the span of the above error should continue here |
| } |
| //~^^^^ suspicious_else_formatting |
| |
| // those are ok: |
| if foo() { |
| } |
| { |
| } |
| |
| if foo() { |
| } else { |
| } |
| |
| if foo() { |
| } |
| else { |
| } |
| |
| if foo() { |
| } |
| if foo() { |
| } |
| |
| // Almost Allman style braces. Lint these. |
| if foo() { |
| } |
| |
| else |
| { |
| } |
| //~^^^^^ suspicious_else_formatting |
| |
| if foo() { |
| } |
| else |
| |
| { |
| |
| } |
| //~^^^^^^ suspicious_else_formatting |
| |
| // #3864 - Allman style braces |
| if foo() |
| { |
| } |
| else |
| { |
| } |
| |
| //#10273 This is fine. Don't warn |
| if foo() { |
| } else |
| /* whelp */ |
| { |
| } |
| |
| // #12497 Don't trigger lint as rustfmt wants it |
| if true { |
| println!("true"); |
| } |
| /*else if false { |
| }*/ |
| else { |
| println!("false"); |
| } |
| |
| if true { |
| println!("true"); |
| } // else if false {} |
| else { |
| println!("false"); |
| } |
| |
| if true { |
| println!("true"); |
| } /* if true { |
| println!("true"); |
| } |
| */ |
| else { |
| println!("false"); |
| } |
| |
| } |
| |
| // #7650 - Don't lint. Proc-macro using bad spans for `if` expressions. |
| #[derive(DeriveBadSpan)] |
| struct _Foo(u32, u32); |