From 1bd04d9064399cc2e1c490906b897397ff6929b1 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 4 Jun 2021 20:36:43 +0200 Subject: [PATCH] Don't inline mutable locals in 'inline_local_variable' --- .../src/handlers/inline_local_variable.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/ide_assists/src/handlers/inline_local_variable.rs b/crates/ide_assists/src/handlers/inline_local_variable.rs index f5dafc8cb1..2441dbb8b2 100644 --- a/crates/ide_assists/src/handlers/inline_local_variable.rs +++ b/crates/ide_assists/src/handlers/inline_local_variable.rs @@ -182,6 +182,10 @@ fn inline_usage(ctx: &AssistContext) -> Option { PathResolution::Local(local) => local, _ => return None, }; + if local.is_mut(ctx.sema.db) { + cov_mark::hit!(test_not_inline_mut_variable_use); + return None; + } let bind_pat = match local.source(ctx.db()).value { Either::Left(ident) => ident, @@ -426,6 +430,19 @@ fn foo() { ); } + #[test] + fn test_not_inline_mut_variable_use() { + cov_mark::check!(test_not_inline_mut_variable_use); + check_assist_not_applicable( + inline_local_variable, + r" +fn foo() { + let mut a = 1 + 1; + a$0 + 1; +}", + ); + } + #[test] fn test_call_expr() { check_assist(