mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 12:33:33 +00:00
internal: Don't serialize empty fields in completions and resolve payloads
This commit is contained in:
parent
27e824fad4
commit
de7808bb71
3 changed files with 12 additions and 4 deletions
|
@ -823,8 +823,11 @@ impl Request for OnTypeFormatting {
|
|||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct CompletionResolveData {
|
||||
pub position: lsp_types::TextDocumentPositionParams,
|
||||
#[serde(skip_serializing_if = "Vec::is_empty", default)]
|
||||
pub imports: Vec<CompletionImport>,
|
||||
#[serde(skip_serializing_if = "Option::is_none", default)]
|
||||
pub version: Option<i32>,
|
||||
#[serde(skip_serializing_if = "Option::is_none", default)]
|
||||
pub trigger_character: Option<char>,
|
||||
pub for_ref: bool,
|
||||
pub hash: String,
|
||||
|
@ -836,6 +839,7 @@ pub struct InlayHintResolveData {
|
|||
// This is a string instead of a u64 as javascript can't represent u64 fully
|
||||
pub hash: String,
|
||||
pub resolve_range: lsp_types::Range,
|
||||
#[serde(skip_serializing_if = "Option::is_none", default)]
|
||||
pub version: Option<i32>,
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
use std::{
|
||||
iter::once,
|
||||
mem,
|
||||
ops::Not as _,
|
||||
sync::atomic::{AtomicU32, Ordering},
|
||||
};
|
||||
|
||||
|
@ -358,9 +359,12 @@ fn completion_item(
|
|||
filter_text,
|
||||
kind: Some(completion_item_kind(item.kind)),
|
||||
text_edit,
|
||||
additional_text_edits: Some(additional_text_edits),
|
||||
additional_text_edits: additional_text_edits
|
||||
.is_empty()
|
||||
.not()
|
||||
.then_some(additional_text_edits),
|
||||
documentation,
|
||||
deprecated: Some(item.deprecated),
|
||||
deprecated: item.deprecated.then_some(item.deprecated),
|
||||
tags,
|
||||
command,
|
||||
insert_text_format,
|
||||
|
@ -370,7 +374,7 @@ fn completion_item(
|
|||
if config.completion_label_details_support() {
|
||||
if fields_to_resolve.resolve_label_details {
|
||||
something_to_resolve |= true;
|
||||
} else {
|
||||
} else if item.label_detail.is_some() || item.detail.is_some() {
|
||||
lsp_item.label_details = Some(lsp_types::CompletionItemLabelDetails {
|
||||
detail: item.label_detail.as_ref().map(ToString::to_string),
|
||||
description: item.detail.clone(),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!---
|
||||
lsp/ext.rs hash: 14b7fb1309f5bb00
|
||||
lsp/ext.rs hash: 9790509d87670c22
|
||||
|
||||
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:
|
||||
|
|
Loading…
Reference in a new issue