Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/rust-analyzer/src/lib.rs')
| -rw-r--r-- | crates/rust-analyzer/src/lib.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/lib.rs b/crates/rust-analyzer/src/lib.rs index e7f5a7f5e7..61ec576dd4 100644 --- a/crates/rust-analyzer/src/lib.rs +++ b/crates/rust-analyzer/src/lib.rs @@ -47,7 +47,8 @@ use self::lsp::ext as lsp_ext; #[cfg(test)] mod integrated_benchmarks; -use ide::{CompletionItem, CompletionRelevance}; +use hir::Mutability; +use ide::{CompletionItem, CompletionItemRefMode, CompletionRelevance}; use serde::de::DeserializeOwned; use tenthash::TentHasher; @@ -132,8 +133,13 @@ fn completion_item_hash(item: &CompletionItem, is_ref_completion: bool) -> [u8; hasher.update(detail); } hash_completion_relevance(&mut hasher, &item.relevance); - if let Some((mutability, text_size)) = &item.ref_match { - hasher.update(mutability.as_keyword_for_ref()); + if let Some((ref_mode, text_size)) = &item.ref_match { + let prefix = match ref_mode { + CompletionItemRefMode::Reference(Mutability::Shared) => "&", + CompletionItemRefMode::Reference(Mutability::Mut) => "&mut ", + CompletionItemRefMode::Dereference => "*", + }; + hasher.update(prefix); hasher.update(u32::from(*text_size).to_le_bytes()); } for (import_path, import_name) in &item.import_to_add { |