Skip to content

Commit b203c73

Browse files
Avoid hashing completion-related ranges as those may change during /resolve query
1 parent 160cb32 commit b203c73

File tree

1 file changed

+3
-15
lines changed
  • src/tools/rust-analyzer/crates/rust-analyzer/src

1 file changed

+3
-15
lines changed

src/tools/rust-analyzer/crates/rust-analyzer/src/lib.rs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ use self::lsp::ext as lsp_ext;
4747
#[cfg(test)]
4848
mod integrated_benchmarks;
4949

50-
use ide::{CompletionItem, CompletionRelevance, TextEdit, TextRange};
50+
use ide::{CompletionItem, CompletionRelevance};
5151
use serde::de::DeserializeOwned;
5252
use tenthash::TentHasher;
5353

@@ -65,18 +65,6 @@ pub fn from_json<T: DeserializeOwned>(
6565
}
6666

6767
fn completion_item_hash(item: &CompletionItem, is_ref_completion: bool) -> [u8; 20] {
68-
fn hash_text_range(hasher: &mut TentHasher, text_range: &TextRange) {
69-
hasher.update(u32::from(text_range.start()).to_le_bytes());
70-
hasher.update(u32::from(text_range.end()).to_le_bytes());
71-
}
72-
73-
fn hash_text_edit(hasher: &mut TentHasher, edit: &TextEdit) {
74-
for indel in edit.iter() {
75-
hasher.update(&indel.insert);
76-
hash_text_range(hasher, &indel.delete);
77-
}
78-
}
79-
8068
fn hash_completion_relevance(hasher: &mut TentHasher, relevance: &CompletionRelevance) {
8169
use ide_completion::{
8270
CompletionRelevancePostfixMatch, CompletionRelevanceReturnType,
@@ -130,8 +118,8 @@ fn completion_item_hash(item: &CompletionItem, is_ref_completion: bool) -> [u8;
130118
if let Some(label_detail) = &item.label_detail {
131119
hasher.update(label_detail);
132120
}
133-
hash_text_range(&mut hasher, &item.source_range);
134-
hash_text_edit(&mut hasher, &item.text_edit);
121+
// NB: do not hash edits or source range, as those may change between the time the client sends the resolve request
122+
// and the time it receives it: some editors do allow changing the buffer between that, leading to ranges being different.
135123
hasher.update(item.kind.tag());
136124
hasher.update(&item.lookup);
137125
if let Some(detail) = &item.detail {

0 commit comments

Comments
 (0)