-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #92402 - pr2502:while-let-typo, r=oli-obk
Suggest while let x = y when encountering while x = y Extends #75931 to also detect where the `let` might be missing from `while let` expressions.
- Loading branch information
Showing
3 changed files
with
56 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
fn main() { | ||
let foo = Some(0); | ||
let bar = None; | ||
while Some(x) = foo {} //~ ERROR cannot find value `x` in this scope | ||
while Some(foo) = bar {} | ||
while 3 = foo {} //~ ERROR mismatched types | ||
while Some(3) = foo {} //~ ERROR invalid left-hand side of assignment | ||
while x = 5 {} //~ ERROR cannot find value `x` in this scope | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
error[E0425]: cannot find value `x` in this scope | ||
--> $DIR/while-let-typo.rs:4:16 | ||
| | ||
LL | while Some(x) = foo {} | ||
| ^ not found in this scope | ||
| | ||
help: you might have meant to use pattern matching | ||
| | ||
LL | while let Some(x) = foo {} | ||
| +++ | ||
|
||
error[E0425]: cannot find value `x` in this scope | ||
--> $DIR/while-let-typo.rs:8:11 | ||
| | ||
LL | while x = 5 {} | ||
| ^ not found in this scope | ||
| | ||
help: you might have meant to use pattern matching | ||
| | ||
LL | while let x = 5 {} | ||
| +++ | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/while-let-typo.rs:6:11 | ||
| | ||
LL | while 3 = foo {} | ||
| ^^^^^^^ expected `bool`, found `()` | ||
|
||
error[E0070]: invalid left-hand side of assignment | ||
--> $DIR/while-let-typo.rs:7:19 | ||
| | ||
LL | while Some(3) = foo {} | ||
| - ^ | ||
| | | ||
| cannot assign to this expression | ||
| | ||
help: you might have meant to use pattern destructuring | ||
| | ||
LL | while let Some(3) = foo {} | ||
| +++ | ||
|
||
error: aborting due to 4 previous errors | ||
|
||
Some errors have detailed explanations: E0070, E0308, E0425. | ||
For more information about an error, try `rustc --explain E0070`. |