aboutsummaryrefslogtreecommitdiff
path: root/crates/assists/src/handlers/inline_local_variable.rs
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2021-01-12 14:51:02 +0000
committerLukas Wirth <[email protected]>2021-01-12 14:51:02 +0000
commit2c1777a2e264e58fccd5ace94b238c8a497ddbda (patch)
treee7d47c95c6bcdeecd5f321f4ca969d04ca90dff7 /crates/assists/src/handlers/inline_local_variable.rs
parentfbdb32adfc49e0d69b7fd8e44135bea59382d2cb (diff)
Ensure uniqueness of file ids in reference search via hashmap
Diffstat (limited to 'crates/assists/src/handlers/inline_local_variable.rs')
-rw-r--r--crates/assists/src/handlers/inline_local_variable.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/assists/src/handlers/inline_local_variable.rs b/crates/assists/src/handlers/inline_local_variable.rs
index 928df6825..dc798daaa 100644
--- a/crates/assists/src/handlers/inline_local_variable.rs
+++ b/crates/assists/src/handlers/inline_local_variable.rs
@@ -47,8 +47,8 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext) -> O
47 47
48 let def = ctx.sema.to_def(&bind_pat)?; 48 let def = ctx.sema.to_def(&bind_pat)?;
49 let def = Definition::Local(def); 49 let def = Definition::Local(def);
50 let refs = def.usages(&ctx.sema).all(); 50 let usages = def.usages(&ctx.sema).all();
51 if refs.is_empty() { 51 if usages.is_empty() {
52 mark::hit!(test_not_applicable_if_variable_unused); 52 mark::hit!(test_not_applicable_if_variable_unused);
53 return None; 53 return None;
54 }; 54 };
@@ -66,9 +66,10 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext) -> O
66 let_stmt.syntax().text_range() 66 let_stmt.syntax().text_range()
67 }; 67 };
68 68
69 let wrap_in_parens = refs 69 let wrap_in_parens = usages
70 .iter() 70 .references
71 .flat_map(|refs| &refs.references) 71 .values()
72 .flatten()
72 .map(|&FileReference { range, .. }| { 73 .map(|&FileReference { range, .. }| {
73 let usage_node = 74 let usage_node =
74 ctx.covering_node_for_range(range).ancestors().find_map(ast::PathExpr::cast)?; 75 ctx.covering_node_for_range(range).ancestors().find_map(ast::PathExpr::cast)?;
@@ -115,8 +116,7 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext) -> O
115 target, 116 target,
116 move |builder| { 117 move |builder| {
117 builder.delete(delete_range); 118 builder.delete(delete_range);
118 for (reference, should_wrap) in 119 for (reference, should_wrap) in usages.references.values().flatten().zip(wrap_in_parens)
119 refs.iter().flat_map(|refs| &refs.references).zip(wrap_in_parens)
120 { 120 {
121 let replacement = 121 let replacement =
122 if should_wrap { init_in_paren.clone() } else { init_str.clone() }; 122 if should_wrap { init_in_paren.clone() } else { init_str.clone() };