diff options
author | Lukas Wirth <[email protected]> | 2021-01-12 14:51:02 +0000 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2021-01-12 14:51:02 +0000 |
commit | 2c1777a2e264e58fccd5ace94b238c8a497ddbda (patch) | |
tree | e7d47c95c6bcdeecd5f321f4ca969d04ca90dff7 /crates/assists/src/handlers/inline_local_variable.rs | |
parent | fbdb32adfc49e0d69b7fd8e44135bea59382d2cb (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.rs | 14 |
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() }; |