Fix for issue 6640

This commit is contained in:
Pierre-Andre Gagnon 2021-02-02 18:39:23 -05:00
parent c5f3f9df3b
commit bfbc083587
3 changed files with 93 additions and 136 deletions

View file

@ -116,8 +116,36 @@ fn issue_6384(s: &str) -> Option<&str> {
})
}
// should be linted
fn issue_6640_1(a: bool, b: bool) -> Option<()> {
if a && b {
return Some(());
}
if a {
Some(());
Some(())
} else {
return Some(());
}
}
// should be linted
fn issue_6640_2(a: bool, b: bool) -> Result<(), i32> {
if a && b {
return Ok(());
}
if a {
Ok(());
Ok(())
} else {
return Ok(());
}
}
fn main() {
// method calls are not linted
func1(true, true);
func2(true, true);
issue_6640_1(true, true);
issue_6640_2(true, true);
}

View file

@ -1,106 +1,9 @@
error: this function's return value is unnecessarily wrapped by `Option`
--> $DIR/unnecessary_wraps.rs:8:1
error[E0282]: type annotations needed
--> $DIR/unnecessary_wraps.rs:138:9
|
LL | / fn func1(a: bool, b: bool) -> Option<i32> {
LL | | if a && b {
LL | | return Some(42);
LL | | }
... |
LL | | }
LL | | }
| |_^
|
= note: `-D clippy::unnecessary-wraps` implied by `-D warnings`
help: remove `Option` from the return type...
|
LL | fn func1(a: bool, b: bool) -> i32 {
| ^^^
help: ...and change the returning expressions
|
LL | return 42;
LL | }
LL | if a {
LL | Some(-1);
LL | 2
LL | } else {
...
LL | Ok(());
| ^^ cannot infer type for type parameter `E` declared on the enum `Result`
error: this function's return value is unnecessarily wrapped by `Option`
--> $DIR/unnecessary_wraps.rs:21:1
|
LL | / fn func2(a: bool, b: bool) -> Option<i32> {
LL | | if a && b {
LL | | return Some(10);
LL | | }
... |
LL | | }
LL | | }
| |_^
|
help: remove `Option` from the return type...
|
LL | fn func2(a: bool, b: bool) -> i32 {
| ^^^
help: ...and change the returning expressions
|
LL | return 10;
LL | }
LL | if a {
LL | 20
LL | } else {
LL | 30
|
error: this function's return value is unnecessarily wrapped by `Option`
--> $DIR/unnecessary_wraps.rs:51:1
|
LL | / fn func5() -> Option<i32> {
LL | | Some(1)
LL | | }
| |_^
|
help: remove `Option` from the return type...
|
LL | fn func5() -> i32 {
| ^^^
help: ...and change the returning expressions
|
LL | 1
|
error: this function's return value is unnecessarily wrapped by `Result`
--> $DIR/unnecessary_wraps.rs:61:1
|
LL | / fn func7() -> Result<i32, ()> {
LL | | Ok(1)
LL | | }
| |_^
|
help: remove `Result` from the return type...
|
LL | fn func7() -> i32 {
| ^^^
help: ...and change the returning expressions
|
LL | 1
|
error: this function's return value is unnecessarily wrapped by `Option`
--> $DIR/unnecessary_wraps.rs:93:5
|
LL | / fn func12() -> Option<i32> {
LL | | Some(1)
LL | | }
| |_____^
|
help: remove `Option` from the return type...
|
LL | fn func12() -> i32 {
| ^^^
help: ...and change the returning expressions
|
LL | 1
|
error: aborting due to 5 previous errors
error: aborting due to previous error
For more information about this error, try `rustc --explain E0282`.