Do not suggest let_else if no bindings would be introduced

This commit is contained in:
Esteban Kuber 2022-03-08 17:20:05 +00:00
parent 0d92752b8a
commit c3a998e82a
7 changed files with 1 additions and 45 deletions

View File

@ -330,7 +330,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> {
], ],
Applicability::HasPlaceholders, Applicability::HasPlaceholders,
); );
if cx.tcx.sess.is_nightly_build() { if !bindings.is_empty() && cx.tcx.sess.is_nightly_build() {
err.span_suggestion_verbose( err.span_suggestion_verbose(
semi_span.shrink_to_lo(), semi_span.shrink_to_lo(),
&format!( &format!(

View File

@ -11,10 +11,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | A = { if let 0 = 0 { todo!() } 0 }, LL | A = { if let 0 = 0 { todo!() } 0 },
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | A = { let 0 = 0 else { todo!() }; 0 },
| ++++++++++++++++
error: aborting due to previous error error: aborting due to previous error

View File

@ -11,10 +11,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | let x: [i32; { if let 0 = 0 { todo!() } 0 }] = []; LL | let x: [i32; { if let 0 = 0 { todo!() } 0 }] = [];
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let x: [i32; { let 0 = 0 else { todo!() }; 0 }] = [];
| ++++++++++++++++
error: aborting due to previous error error: aborting due to previous error

View File

@ -11,10 +11,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | const X: i32 = { if let 0 = 0 { todo!() } 0 }; LL | const X: i32 = { if let 0 = 0 { todo!() } 0 };
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | const X: i32 = { let 0 = 0 else { todo!() }; 0 };
| ++++++++++++++++
error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered
--> $DIR/const-match-check.rs:8:23 --> $DIR/const-match-check.rs:8:23
@ -29,10 +25,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | static Y: i32 = { if let 0 = 0 { todo!() } 0 }; LL | static Y: i32 = { if let 0 = 0 { todo!() } 0 };
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | static Y: i32 = { let 0 = 0 else { todo!() }; 0 };
| ++++++++++++++++
error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered
--> $DIR/const-match-check.rs:13:26 --> $DIR/const-match-check.rs:13:26
@ -47,10 +39,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | const X: i32 = { if let 0 = 0 { todo!() } 0 }; LL | const X: i32 = { if let 0 = 0 { todo!() } 0 };
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | const X: i32 = { let 0 = 0 else { todo!() }; 0 };
| ++++++++++++++++
error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered error[E0005]: refutable pattern in local binding: `i32::MIN..=-1_i32` and `1_i32..=i32::MAX` not covered
--> $DIR/const-match-check.rs:19:26 --> $DIR/const-match-check.rs:19:26
@ -65,10 +53,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | const X: i32 = { if let 0 = 0 { todo!() } 0 }; LL | const X: i32 = { if let 0 = 0 { todo!() } 0 };
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | const X: i32 = { let 0 = 0 else { todo!() }; 0 };
| ++++++++++++++++
error: aborting due to 4 previous errors error: aborting due to 4 previous errors

View File

@ -11,10 +11,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | if let (0 | (1 | 2)) = 0 { todo!() } LL | if let (0 | (1 | 2)) = 0 { todo!() }
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let (0 | (1 | 2)) = 0 else { todo!() };
| ++++++++++++++++
error[E0004]: non-exhaustive patterns: `i32::MIN..=-1_i32` and `3_i32..=i32::MAX` not covered error[E0004]: non-exhaustive patterns: `i32::MIN..=-1_i32` and `3_i32..=i32::MAX` not covered
--> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:3:11 --> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:3:11

View File

@ -46,10 +46,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | if let E::A = e { todo!() } LL | if let E::A = e { todo!() }
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let E::A = e else { todo!() };
| ++++++++++++++++
error[E0004]: non-exhaustive patterns: `&B` and `&C` not covered error[E0004]: non-exhaustive patterns: `&B` and `&C` not covered
--> $DIR/non-exhaustive-defined-here.rs:52:11 --> $DIR/non-exhaustive-defined-here.rs:52:11
@ -99,10 +95,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | if let E::A = e { todo!() } LL | if let E::A = e { todo!() }
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let E::A = e else { todo!() };
| ++++++++++++++++
error[E0004]: non-exhaustive patterns: `&&mut &B` and `&&mut &C` not covered error[E0004]: non-exhaustive patterns: `&&mut &B` and `&&mut &C` not covered
--> $DIR/non-exhaustive-defined-here.rs:66:11 --> $DIR/non-exhaustive-defined-here.rs:66:11
@ -152,10 +144,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | if let E::A = e { todo!() } LL | if let E::A = e { todo!() }
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let E::A = e else { todo!() };
| ++++++++++++++++
error[E0004]: non-exhaustive patterns: `None` not covered error[E0004]: non-exhaustive patterns: `None` not covered
--> $DIR/non-exhaustive-defined-here.rs:92:11 --> $DIR/non-exhaustive-defined-here.rs:92:11

View File

@ -19,10 +19,6 @@ help: you might want to use `if let` to ignore the variants that aren't matched
| |
LL | if let (1, (Some(1), 2..=3)) = (1, (None, 2)) { todo!() } LL | if let (1, (Some(1), 2..=3)) = (1, (None, 2)) { todo!() }
| ++ ~~~~~~~~~~~ | ++ ~~~~~~~~~~~
help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variants that aren't matched
|
LL | let (1, (Some(1), 2..=3)) = (1, (None, 2)) else { todo!() };
| ++++++++++++++++
error: aborting due to 2 previous errors error: aborting due to 2 previous errors