Skip mutable diagnostics on synthetic bindings
This commit is contained in:
parent
6d333e587d
commit
d8b970f1fc
@ -1661,6 +1661,14 @@ pub fn diagnostics(self, db: &dyn HirDatabase, acc: &mut Vec<AnyDiagnostic>) {
|
|||||||
let Some(&local) = mir_body.binding_locals.get(binding_id) else {
|
let Some(&local) = mir_body.binding_locals.get(binding_id) else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
|
if body[binding_id]
|
||||||
|
.definitions
|
||||||
|
.iter()
|
||||||
|
.any(|&pat| source_map.pat_syntax(pat).is_err())
|
||||||
|
{
|
||||||
|
// Skip synthetic bindings
|
||||||
|
continue;
|
||||||
|
}
|
||||||
let need_mut = &mol[local];
|
let need_mut = &mol[local];
|
||||||
let local = Local { parent: self.into(), binding_id };
|
let local = Local { parent: self.into(), binding_id };
|
||||||
match (need_mut, local.is_mut(db)) {
|
match (need_mut, local.is_mut(db)) {
|
||||||
|
@ -1091,6 +1091,19 @@ fn main() {
|
|||||||
//^^^^^ 💡 weak: variable does not need to be mutable
|
//^^^^^ 💡 weak: variable does not need to be mutable
|
||||||
f(x);
|
f(x);
|
||||||
}
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn regression_15099() {
|
||||||
|
check_diagnostics(
|
||||||
|
r#"
|
||||||
|
//- minicore: iterator, range
|
||||||
|
fn f() {
|
||||||
|
loop {}
|
||||||
|
for _ in 0..2 {}
|
||||||
|
}
|
||||||
"#,
|
"#,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user