-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Don't suggest adding let
in certain if
conditions
#97856
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
(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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This error isn't as good as it could be :(
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
let
in anif
condition 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.