Don't suggest adding let in certain if conditions#97856
Don't suggest adding let in certain if conditions#97856bors merged 1 commit intorust-lang:masterfrom
let in certain if conditions#97856Conversation
|
(rust-highfive has picked a reviewer for you, use r? to override) |
|
r? @estebank |
| error: `let` expressions are not supported here | ||
| --> $DIR/bad-if-let-suggestion.rs:5:8 | ||
| | | ||
| LL | if let x = 1 && i = 2 {} | ||
| | ^^^^^^^^^ | ||
| | | ||
| = note: only supported directly in conditions of `if` and `while` expressions | ||
|
|
||
| error[E0425]: cannot find value `i` in this scope | ||
| --> $DIR/bad-if-let-suggestion.rs:5:21 | ||
| | | ||
| LL | if let x = 1 && i = 2 {} | ||
| | ^ not found in this scope |
There was a problem hiding this comment.
This error isn't as good as it could be :(
There was a problem hiding this comment.
yeah i left a fixme
| error[E0658]: `let` expressions in this position are unstable | ||
| --> $DIR/bad-if-let-suggestion.rs:5:8 | ||
| | | ||
| LL | if let x = 1 && i = 2 {} | ||
| | ^^^^^^^^^ | ||
| | | ||
| = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information | ||
| = help: add `#![feature(let_chains)]` to the crate attributes to enable | ||
|
|
||
| error[E0308]: mismatched types | ||
| --> $DIR/bad-if-let-suggestion.rs:5:8 | ||
| | | ||
| LL | if let x = 1 && i = 2 {} | ||
| | ^^^^^^^^^^^^^^^^^^ expected `bool`, found `()` |
There was a problem hiding this comment.
It'd be nice if all the errors pointing at line 5 (these plus the ones highlighted above) ended up being only one. Particularly the "let not supported here" and "let expressions are unstable" seem to be quite redundant.
There was a problem hiding this comment.
yeah, the problem is that they all happen in different stages :( so it's really hard to suppress further ones
There was a problem hiding this comment.
Oh, for sure. I wasn't suggesting doing it in this PR, only mentioning what follow up work that I'd like to get to at some point.
|
@bors r+ |
|
📌 Commit 2ae1ec9 has been approved by |
…piler-errors Rollup of 9 pull requests Successful merges: - rust-lang#97557 (Fix indices and remove some unwraps in arg mismatch algorithm) - rust-lang#97830 (Add std::alloc::set_alloc_error_hook example) - rust-lang#97856 (Don't suggest adding `let` in certain `if` conditions) - rust-lang#97857 (Suggest escaping `box` as identifier) - rust-lang#97871 (Suggest using `iter()` or `into_iter()` for `Vec`) - rust-lang#97882 (Add regresion test for rust-lang#67498) - rust-lang#97883 (Remove `ignore-compare-mode-nll` annotations from tests) - rust-lang#97891 (Update books) - rust-lang#97894 (Fix polonius compare mode.) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Avoid being too eager to suggest
letin anifcondition with an=, namely when the LHS of the=isn't even valid as a pattern (to a first degree approximation).This heustic I came up with kinda sucks. Let me know if it needs to be refined.