Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/mutability_errors.rs')
| -rw-r--r-- | crates/ide-diagnostics/src/handlers/mutability_errors.rs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/crates/ide-diagnostics/src/handlers/mutability_errors.rs b/crates/ide-diagnostics/src/handlers/mutability_errors.rs index 1203a96124..b52c36378c 100644 --- a/crates/ide-diagnostics/src/handlers/mutability_errors.rs +++ b/crates/ide-diagnostics/src/handlers/mutability_errors.rs @@ -529,6 +529,7 @@ fn f(x: [(i32, u8); 10]) { #[test] fn overloaded_deref() { + // FIXME: check for false negative check_diagnostics( r#" //- minicore: deref_mut @@ -547,9 +548,42 @@ impl DerefMut for Foo { } } fn f() { - // FIXME: remove this mut and detect error + let x = Foo; + let y = &*x; + let x = Foo; let mut x = Foo; - let y = &mut *x; + let y: &mut i32 = &mut x; +} +"#, + ); + } + + #[test] + fn or_pattern() { + check_diagnostics( + r#" +//- minicore: option +fn f(_: i32) {} +fn main() { + let ((Some(mut x), None) | (_, Some(mut x))) = (None, Some(7)); + //^^^^^ 💡 weak: remove this `mut` + f(x); +} +"#, + ); + } + + #[test] + fn respect_allow_unused_mut() { + // FIXME: respect + check_diagnostics( + r#" +fn f(_: i32) {} +fn main() { + #[allow(unused_mut)] + let mut x = 2; + //^^^^^ 💡 weak: remove this `mut` + f(x); } "#, ); |