Skip to content
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

Merged
merged 1 commit into from
Jun 9, 2022

Conversation

compiler-errors
Copy link
Member

@compiler-errors compiler-errors commented Jun 8, 2022

Avoid being too eager to suggest let in an if 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.

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jun 8, 2022
@rust-highfive
Copy link
Collaborator

r? @petrochenkov

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 8, 2022
@compiler-errors
Copy link
Member Author

r? @estebank

Comment on lines +1 to +13
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
Copy link
Contributor

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 :(

Copy link
Member Author

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

Comment on lines +51 to +64
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 `()`
Copy link
Contributor

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.

Copy link
Member Author

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

Copy link
Contributor

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.

@estebank
Copy link
Contributor

estebank commented Jun 8, 2022

@bors r+

@bors
Copy link
Contributor

bors commented Jun 8, 2022

📌 Commit 2ae1ec9 has been approved by estebank

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 8, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Jun 8, 2022
…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
@bors bors merged commit e040920 into rust-lang:master Jun 9, 2022
@rustbot rustbot added this to the 1.63.0 milestone Jun 9, 2022
@compiler-errors compiler-errors deleted the bad-let-suggestions branch August 11, 2023 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants