-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7a01033
commit 8ade7a6
Showing
3 changed files
with
240 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
#![warn(clippy::redundant_else)] | ||
#![allow(clippy::needless_return, clippy::if_same_then_else, clippy::needless_late_init)] | ||
|
||
fn main() { | ||
loop { | ||
// break | ||
if foo() { | ||
println!("Love your neighbor;"); | ||
break; | ||
} | ||
//~^ ERROR: redundant else block | ||
println!("yet don't pull down your hedge."); | ||
// continue | ||
if foo() { | ||
println!("He that lies down with Dogs,"); | ||
continue; | ||
} | ||
//~^ ERROR: redundant else block | ||
println!("shall rise up with fleas."); | ||
// match block | ||
if foo() { | ||
match foo() { | ||
1 => break, | ||
_ => return, | ||
} | ||
} | ||
//~^ ERROR: redundant else block | ||
println!("You may delay, but time will not."); | ||
} | ||
// else if | ||
if foo() { | ||
return; | ||
} else if foo() { | ||
return; | ||
} | ||
//~^ ERROR: redundant else block | ||
println!("A fat kitchen makes a lean will."); | ||
// let binding outside of block | ||
let _ = { | ||
if foo() { | ||
return; | ||
} | ||
//~^ ERROR: redundant else block | ||
1 | ||
}; | ||
// else if with let binding outside of block | ||
let _ = { | ||
if foo() { | ||
return; | ||
} else if foo() { | ||
return; | ||
} | ||
//~^ ERROR: redundant else block | ||
2 | ||
}; | ||
// inside if let | ||
let _ = if let Some(1) = foo() { | ||
let _ = 1; | ||
if foo() { | ||
return; | ||
} | ||
//~^ ERROR: redundant else block | ||
1 | ||
} else { | ||
1 | ||
}; | ||
|
||
// | ||
// non-lint cases | ||
// | ||
|
||
// sanity check | ||
if foo() { | ||
let _ = 1; | ||
} else { | ||
println!("Who is wise? He that learns from every one."); | ||
} | ||
// else if without else | ||
if foo() { | ||
return; | ||
} else if foo() { | ||
foo() | ||
}; | ||
// nested if return | ||
if foo() { | ||
if foo() { | ||
return; | ||
} | ||
} else { | ||
foo() | ||
}; | ||
// match with non-breaking branch | ||
if foo() { | ||
match foo() { | ||
1 => foo(), | ||
_ => return, | ||
} | ||
} else { | ||
println!("Three may keep a secret, if two of them are dead."); | ||
} | ||
// let binding | ||
let _ = if foo() { | ||
return; | ||
} else { | ||
1 | ||
}; | ||
// assign | ||
let mut a; | ||
a = if foo() { | ||
return; | ||
} else { | ||
1 | ||
}; | ||
// assign-op | ||
a += if foo() { | ||
return; | ||
} else { | ||
1 | ||
}; | ||
// if return else if else | ||
if foo() { | ||
return; | ||
} else if foo() { | ||
1 | ||
} else { | ||
2 | ||
}; | ||
// if else if return else | ||
if foo() { | ||
1 | ||
} else if foo() { | ||
return; | ||
} else { | ||
2 | ||
}; | ||
// else if with let binding | ||
let _ = if foo() { | ||
return; | ||
} else if foo() { | ||
return; | ||
} else { | ||
2 | ||
}; | ||
// inside function call | ||
Box::new(if foo() { | ||
return; | ||
} else { | ||
1 | ||
}); | ||
} | ||
|
||
fn foo<T>() -> T { | ||
unimplemented!("I'm not Santa Claus") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,88 +1,123 @@ | ||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:10:16 | ||
--> tests/ui/redundant_else.rs:10:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | println!("yet don't pull down your hedge."); | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
= note: `-D clippy::redundant-else` implied by `-D warnings` | ||
= help: to override `-D warnings` add `#[allow(clippy::redundant_else)]` | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + println!("yet don't pull down your hedge."); | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:18:16 | ||
--> tests/ui/redundant_else.rs:18:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | println!("shall rise up with fleas."); | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + println!("shall rise up with fleas."); | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:28:16 | ||
--> tests/ui/redundant_else.rs:28:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | println!("You may delay, but time will not."); | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + println!("You may delay, but time will not."); | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:38:12 | ||
--> tests/ui/redundant_else.rs:38:6 | ||
| | ||
LL | } else { | ||
| ____________^ | ||
| ______^ | ||
LL | | | ||
LL | | println!("A fat kitchen makes a lean will."); | ||
LL | | } | ||
| |_____^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + println!("A fat kitchen makes a lean will."); | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:46:16 | ||
--> tests/ui/redundant_else.rs:46:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | 1 | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + 1 | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:57:16 | ||
--> tests/ui/redundant_else.rs:57:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | 2 | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + 2 | ||
| | ||
|
||
error: redundant else block | ||
--> tests/ui/redundant_else.rs:67:16 | ||
--> tests/ui/redundant_else.rs:67:10 | ||
| | ||
LL | } else { | ||
| ________________^ | ||
| __________^ | ||
LL | | | ||
LL | | 1 | ||
LL | | } | ||
| |_________^ | ||
| | ||
= help: remove the `else` block and move the contents out | ||
help: remove the `else` block and move the contents out | ||
| | ||
LL ~ } | ||
LL + | ||
LL + 1 | ||
| | ||
|
||
error: aborting due to 7 previous errors | ||
|