diff options
| author | Kirill Bulatov <mail4score@gmail.com> | 2024-12-09 22:09:25 +0200 |
|---|---|---|
| committer | Kirill Bulatov <mail4score@gmail.com> | 2024-12-09 22:26:00 +0200 |
| commit | e8e3949698289876e8b309ced9dc85f962021437 (patch) | |
| tree | bcf5330108f1a624824f47083c61eb4d29c62b0a | |
| parent | cbc006993957595db56432d0d0b43e944fd5e9d7 (diff) | |
| download | rust-e8e3949698289876e8b309ced9dc85f962021437.tar.gz rust-e8e3949698289876e8b309ced9dc85f962021437.zip | |
Always compute the hash when r-a wants the imports to be resolved
4 files changed, 6 insertions, 17 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs index 9dd6dc999b4..851341dfdf3 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs @@ -1123,9 +1123,6 @@ pub(crate) fn handle_completion_resolve( return Ok(original_completion); }; let source_root = snap.analysis.source_root_id(file_id)?; - let Some(completion_hash_for_resolve) = &resolve_data.completion_item_hash else { - return Ok(original_completion); - }; let mut forced_resolve_completions_config = snap.config.completion(Some(source_root)); forced_resolve_completions_config.fields_to_resolve = CompletionFieldsToResolve::empty(); @@ -1142,7 +1139,7 @@ pub(crate) fn handle_completion_resolve( let Some(corresponding_completion) = completions.into_iter().find(|completion_item| { let hash = completion_item_hash(&completion_item, resolve_data.for_ref); - &hash == completion_hash_for_resolve + hash == resolve_data.hash }) else { return Ok(original_completion); }; diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs index 7d60ae703b2..afb9c909c68 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs @@ -827,7 +827,7 @@ pub struct CompletionResolveData { pub version: Option<i32>, pub trigger_character: Option<char>, pub for_ref: bool, - pub completion_item_hash: Option<[u8; 20]>, + pub hash: [u8; 20], } #[derive(Debug, Serialize, Deserialize)] diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs index 97caed8f08c..f70968d6942 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs @@ -275,11 +275,7 @@ fn completion_item( completion_trigger_character: Option<char>, item: CompletionItem, ) { - let original_completion_item = if fields_to_resolve == &CompletionFieldsToResolve::empty() { - None - } else { - Some(item.clone()) - }; + let original_completion_item = item.clone(); let insert_replace_support = config.insert_replace_support().then_some(tdpp.position); let ref_match = item.ref_match(); @@ -406,9 +402,7 @@ fn completion_item( version, trigger_character: completion_trigger_character, for_ref: true, - completion_item_hash: original_completion_item - .as_ref() - .map(|item| completion_item_hash(item, true)), + hash: completion_item_hash(&original_completion_item, true), }; Some(to_value(ref_resolve_data).unwrap()) } else { @@ -420,9 +414,7 @@ fn completion_item( version, trigger_character: completion_trigger_character, for_ref: false, - completion_item_hash: original_completion_item - .as_ref() - .map(|item| completion_item_hash(item, false)), + hash: completion_item_hash(&original_completion_item, false), }; (ref_resolve_data, Some(to_value(resolve_data).unwrap())) } else { diff --git a/src/tools/rust-analyzer/docs/dev/lsp-extensions.md b/src/tools/rust-analyzer/docs/dev/lsp-extensions.md index 00863825170..80b35d453a3 100644 --- a/src/tools/rust-analyzer/docs/dev/lsp-extensions.md +++ b/src/tools/rust-analyzer/docs/dev/lsp-extensions.md @@ -1,5 +1,5 @@ <!--- -lsp/ext.rs hash: 7d77940d7e63a8b +lsp/ext.rs hash: c4c37ab0bcf7ccb0 If you need to change the above hash to make the test pass, please check if you need to adjust this doc as well and ping this issue: |
