diff --git a/tests/ui/needless_continue.rs b/tests/ui/needless_continue.rs new file mode 100644 index 00000000000..b6f9513be44 --- /dev/null +++ b/tests/ui/needless_continue.rs @@ -0,0 +1,50 @@ +#![feature(plugin)] +#![plugin(clippy)] + +macro_rules! zero { + ($x:expr) => ($x == 0); +} + +macro_rules! nonzero { + ($x:expr) => (!zero!($x)); +} + +#[deny(needless_continue)] +fn main() { + let mut i = 1; + while i < 10 { + i += 1; + + if i % 2 == 0 && i % 3 == 0 { + println!("{}", i); + println!("{}", i+1); + if i % 5 == 0 { + println!("{}", i+2); + } + let i = 0; + println!("bar {} ", i); + } else { + continue; + } + + println!("bleh"); + { + println!("blah"); + } + + // some comments that also should ideally be included in the + // output of the lint suggestion if possible. + if !(!(i == 2) || !(i == 5)) { + println!("lama"); + } + + if (zero!(i % 2) || nonzero!(i % 5)) && i % 3 != 0 { + continue; + } else { + println!("Blabber"); + println!("Jabber"); + } + + println!("bleh"); + } +} diff --git a/tests/ui/needless_continue.stderr b/tests/ui/needless_continue.stderr new file mode 100644 index 00000000000..e8433ef9f74 --- /dev/null +++ b/tests/ui/needless_continue.stderr @@ -0,0 +1,66 @@ +error: This else block is redundant. + + --> $DIR/needless_continue.rs:26:16 + | +26 | } else { + | ________________^ starting here... +27 | | continue; +28 | | } + | |_________^ ...ending here + | +note: lint level defined here + --> $DIR/needless_continue.rs:12:8 + | +12 | #[deny(needless_continue)] + | ^^^^^^^^^^^^^^^^^ + = help: Consider dropping the else clause and merging the code that follows (in the loop) with the if block, like so: + if i % 2 == 0 && i % 3 == 0 { + println!("{}", i); + println!("{}", i+1); + if i % 5 == 0 { + println!("{}", i+2); + } + let i = 0; + println!("bar {} ", i); + + // Merged code follows... + println!("bleh"); + { + println!("blah"); + } + if !(!(i == 2) || !(i == 5)) { + println!("lama"); + } + if (zero!(i % 2) || nonzero!(i % 5)) && i % 3 != 0 { + continue; + } else { + println!("Blabber"); + println!("Jabber"); + } + println!("bleh"); + } + + +error: There is no need for an explicit `else` block for this `if` expression + + --> $DIR/needless_continue.rs:41:9 + | +41 | if (zero!(i % 2) || nonzero!(i % 5)) && i % 3 != 0 { + | _________^ starting here... +42 | | continue; +43 | | } else { +44 | | println!("Blabber"); +45 | | println!("Jabber"); +46 | | } + | |_________^ ...ending here + | + = help: Consider dropping the else clause, and moving out the code in the else block, like so: + if (zero!(i % 2) || nonzero!(i % 5)) && i % 3 != 0 { + continue; + } + println!("Blabber"); + println!("Jabber"); + ... + +error: aborting due to 2 previous errors +