Closed
Description
Code
fn blah() {
loop {
let blah: Option<String>;
if true {
blah = Some("".to_string());
}
if let Some(blah) = blah.as_ref() {
// ...
}
}
}
Current output
error[E0381]: used binding `blah` is possibly-uninitialized
--> src/lib.rs:8:29
|
3 | let blah: Option<String>;
| ---- binding declared here but left uninitialized
4 | if true {
5 | blah = Some("".to_string());
| ----
| |
| binding initialized here in some conditions
| binding initialized here in some conditions
...
8 | if let Some(blah) = blah.as_ref() {
| ^^^^ `blah` used here but it is possibly-uninitialized
Desired output
error[E0381]: used binding `blah` is possibly-uninitialized
--> src/lib.rs:8:29
|
3 | let blah: Option<String>;
| ---- binding declared here but left uninitialized
4 | if true {
5 | blah = Some("".to_string());
| ---- binding initialized here in some conditions
...
8 | if let Some(blah) = blah.as_ref() {
| ^^^^ `blah` used here but it is possibly-uninitialized
Rationale and extra context
The duplicated labels are unnecessary given that they point at the exact same place, as far as the code the user wrote is concerned.
Other cases
Noticed when looking at #57553 (comment)
Rust Version
At least from 1.80 to current 1.82.
Anything else?
No response