add guard to suggestion instead of not linting
This commit is contained in:
parent
c26801ee92
commit
e7fd44f213
4 changed files with 118 additions and 55 deletions
|
|
@ -10,9 +10,19 @@
|
|||
clippy::equatable_if_let,
|
||||
clippy::if_same_then_else
|
||||
)]
|
||||
#![feature(let_chains, if_let_guard)]
|
||||
|
||||
fn issue_11174<T>(boolean: bool, maybe_some: Option<T>) -> bool {
|
||||
matches!(maybe_some, None if !boolean)
|
||||
maybe_some.is_none() && (!boolean)
|
||||
}
|
||||
|
||||
fn issue_11174_edge_cases<T>(boolean: bool, boolean2: bool, maybe_some: Option<T>) {
|
||||
let _ = maybe_some.is_none() && (boolean || boolean2); // guard needs parentheses
|
||||
let _ = match maybe_some { // can't use `matches!` here
|
||||
// because `expr` metavars in macros don't allow let exprs
|
||||
None if let Some(x) = Some(0) && x > 5 => true,
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -10,11 +10,21 @@
|
|||
clippy::equatable_if_let,
|
||||
clippy::if_same_then_else
|
||||
)]
|
||||
#![feature(let_chains, if_let_guard)]
|
||||
|
||||
fn issue_11174<T>(boolean: bool, maybe_some: Option<T>) -> bool {
|
||||
matches!(maybe_some, None if !boolean)
|
||||
}
|
||||
|
||||
fn issue_11174_edge_cases<T>(boolean: bool, boolean2: bool, maybe_some: Option<T>) {
|
||||
let _ = matches!(maybe_some, None if boolean || boolean2); // guard needs parentheses
|
||||
let _ = match maybe_some { // can't use `matches!` here
|
||||
// because `expr` metavars in macros don't allow let exprs
|
||||
None if let Some(x) = Some(0) && x > 5 => true,
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if let None = None::<()> {}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,49 +1,61 @@
|
|||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:19:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:16:5
|
||||
|
|
||||
LL | if let None = None::<()> {}
|
||||
| -------^^^^------------- help: try: `if None::<()>.is_none()`
|
||||
LL | matches!(maybe_some, None if !boolean)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `maybe_some.is_none() && (!boolean)`
|
||||
|
|
||||
= note: `-D clippy::redundant-pattern-matching` implied by `-D warnings`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:20:13
|
||||
|
|
||||
LL | let _ = matches!(maybe_some, None if boolean || boolean2); // guard needs parentheses
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `maybe_some.is_none() && (boolean || boolean2)`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:29:12
|
||||
|
|
||||
LL | if let None = None::<()> {}
|
||||
| -------^^^^------------- help: try: `if None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:21:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:31:12
|
||||
|
|
||||
LL | if let Some(_) = Some(42) {}
|
||||
| -------^^^^^^^----------- help: try: `if Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:23:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:33:12
|
||||
|
|
||||
LL | if let Some(_) = Some(42) {
|
||||
| -------^^^^^^^----------- help: try: `if Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:29:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:39:15
|
||||
|
|
||||
LL | while let Some(_) = Some(42) {}
|
||||
| ----------^^^^^^^----------- help: try: `while Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:31:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:41:15
|
||||
|
|
||||
LL | while let None = Some(42) {}
|
||||
| ----------^^^^----------- help: try: `while Some(42).is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:33:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:43:15
|
||||
|
|
||||
LL | while let None = None::<()> {}
|
||||
| ----------^^^^------------- help: try: `while None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:36:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:46:15
|
||||
|
|
||||
LL | while let Some(_) = v.pop() {
|
||||
| ----------^^^^^^^---------- help: try: `while v.pop().is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:44:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:54:5
|
||||
|
|
||||
LL | / match Some(42) {
|
||||
LL | | Some(_) => true,
|
||||
|
|
@ -52,7 +64,7 @@ LL | | };
|
|||
| |_____^ help: try: `Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:49:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:59:5
|
||||
|
|
||||
LL | / match None::<()> {
|
||||
LL | | Some(_) => false,
|
||||
|
|
@ -61,7 +73,7 @@ LL | | };
|
|||
| |_____^ help: try: `None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:54:13
|
||||
--> $DIR/redundant_pattern_matching_option.rs:64:13
|
||||
|
|
||||
LL | let _ = match None::<()> {
|
||||
| _____________^
|
||||
|
|
@ -71,55 +83,55 @@ LL | | };
|
|||
| |_____^ help: try: `None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:60:20
|
||||
--> $DIR/redundant_pattern_matching_option.rs:70:20
|
||||
|
|
||||
LL | let _ = if let Some(_) = opt { true } else { false };
|
||||
| -------^^^^^^^------ help: try: `if opt.is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:66:20
|
||||
--> $DIR/redundant_pattern_matching_option.rs:76:20
|
||||
|
|
||||
LL | let _ = if let Some(_) = gen_opt() {
|
||||
| -------^^^^^^^------------ help: try: `if gen_opt().is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:68:19
|
||||
--> $DIR/redundant_pattern_matching_option.rs:78:19
|
||||
|
|
||||
LL | } else if let None = gen_opt() {
|
||||
| -------^^^^------------ help: try: `if gen_opt().is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:74:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:84:12
|
||||
|
|
||||
LL | if let Some(..) = gen_opt() {}
|
||||
| -------^^^^^^^^------------ help: try: `if gen_opt().is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:89:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:99:12
|
||||
|
|
||||
LL | if let Some(_) = Some(42) {}
|
||||
| -------^^^^^^^----------- help: try: `if Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:91:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:101:12
|
||||
|
|
||||
LL | if let None = None::<()> {}
|
||||
| -------^^^^------------- help: try: `if None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:93:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:103:15
|
||||
|
|
||||
LL | while let Some(_) = Some(42) {}
|
||||
| ----------^^^^^^^----------- help: try: `while Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:95:15
|
||||
--> $DIR/redundant_pattern_matching_option.rs:105:15
|
||||
|
|
||||
LL | while let None = None::<()> {}
|
||||
| ----------^^^^------------- help: try: `while None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:97:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:107:5
|
||||
|
|
||||
LL | / match Some(42) {
|
||||
LL | | Some(_) => true,
|
||||
|
|
@ -128,7 +140,7 @@ LL | | };
|
|||
| |_____^ help: try: `Some(42).is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:102:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:112:5
|
||||
|
|
||||
LL | / match None::<()> {
|
||||
LL | | Some(_) => false,
|
||||
|
|
@ -137,19 +149,19 @@ LL | | };
|
|||
| |_____^ help: try: `None::<()>.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:110:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:120:12
|
||||
|
|
||||
LL | if let None = *(&None::<()>) {}
|
||||
| -------^^^^----------------- help: try: `if (&None::<()>).is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:111:12
|
||||
--> $DIR/redundant_pattern_matching_option.rs:121:12
|
||||
|
|
||||
LL | if let None = *&None::<()> {}
|
||||
| -------^^^^--------------- help: try: `if (&None::<()>).is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:117:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:127:5
|
||||
|
|
||||
LL | / match x {
|
||||
LL | | Some(_) => true,
|
||||
|
|
@ -158,7 +170,7 @@ LL | | };
|
|||
| |_____^ help: try: `x.is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:122:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:132:5
|
||||
|
|
||||
LL | / match x {
|
||||
LL | | None => true,
|
||||
|
|
@ -167,7 +179,7 @@ LL | | };
|
|||
| |_____^ help: try: `x.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:127:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:137:5
|
||||
|
|
||||
LL | / match x {
|
||||
LL | | Some(_) => false,
|
||||
|
|
@ -176,7 +188,7 @@ LL | | };
|
|||
| |_____^ help: try: `x.is_none()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:132:5
|
||||
--> $DIR/redundant_pattern_matching_option.rs:142:5
|
||||
|
|
||||
LL | / match x {
|
||||
LL | | None => false,
|
||||
|
|
@ -185,16 +197,16 @@ LL | | };
|
|||
| |_____^ help: try: `x.is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_some()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:147:13
|
||||
--> $DIR/redundant_pattern_matching_option.rs:157:13
|
||||
|
|
||||
LL | let _ = matches!(x, Some(_));
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: try: `x.is_some()`
|
||||
|
||||
error: redundant pattern matching, consider using `is_none()`
|
||||
--> $DIR/redundant_pattern_matching_option.rs:149:13
|
||||
--> $DIR/redundant_pattern_matching_option.rs:159:13
|
||||
|
|
||||
LL | let _ = matches!(x, None);
|
||||
| ^^^^^^^^^^^^^^^^^ help: try: `x.is_none()`
|
||||
|
||||
error: aborting due to 28 previous errors
|
||||
error: aborting due to 30 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue