-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't suggest adding let
in certain if
conditions
#97856
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.