Skip to content

Commit

Permalink
Do not suggest let_else if no bindings would be introduced
Browse files Browse the repository at this point in the history
  • Loading branch information
estebank committed Mar 8, 2022
1 parent 0d92752 commit c3a998e
Show file tree
Hide file tree
Showing 7 changed files with 1 addition and 45 deletions.
2 changes: 1 addition & 1 deletion compiler/rustc_mir_build/src/thir/pattern/check_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ impl<'p, 'tcx> MatchVisitor<'_, 'p, 'tcx> {
],
Applicability::HasPlaceholders,
);
if cx.tcx.sess.is_nightly_build() {
if !bindings.is_empty() && cx.tcx.sess.is_nightly_build() {
err.span_suggestion_verbose(
semi_span.shrink_to_lo(),
&format!(
Expand Down
4 changes: 0 additions & 4 deletions src/test/ui/consts/const-match-check.eval1.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
| ++ ~~~~~~~~~~~
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

Expand Down
4 changes: 0 additions & 4 deletions src/test/ui/consts/const-match-check.eval2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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 }] = [];
| ++ ~~~~~~~~~~~
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

Expand Down
16 changes: 0 additions & 16 deletions src/test/ui/consts/const-match-check.matchck.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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 };
| ++ ~~~~~~~~~~~
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
--> $DIR/const-match-check.rs:8:23
Expand All @@ -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 };
| ++ ~~~~~~~~~~~
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
--> $DIR/const-match-check.rs:13:26
Expand All @@ -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 };
| ++ ~~~~~~~~~~~
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
--> $DIR/const-match-check.rs:19:26
Expand All @@ -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 };
| ++ ~~~~~~~~~~~
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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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!() }
| ++ ~~~~~~~~~~~
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
--> $DIR/issue-69875-should-have-been-expanded-earlier-non-exhaustive.rs:3:11
Expand Down
12 changes: 0 additions & 12 deletions src/test/ui/pattern/usefulness/non-exhaustive-defined-here.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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!() }
| ++ ~~~~~~~~~~~
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
--> $DIR/non-exhaustive-defined-here.rs:52:11
Expand Down Expand Up @@ -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!() }
| ++ ~~~~~~~~~~~
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
--> $DIR/non-exhaustive-defined-here.rs:66:11
Expand Down Expand Up @@ -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!() }
| ++ ~~~~~~~~~~~
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
--> $DIR/non-exhaustive-defined-here.rs:92:11
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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!() }
| ++ ~~~~~~~~~~~
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

Expand Down

0 comments on commit c3a998e

Please sign in to comment.