Do not suggest let_else
if no bindings would be introduced
This commit is contained in:
parent
0d92752b8a
commit
c3a998e82a
@ -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!(
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user