Skip to content

Commit 7692c82

Browse files
committed
Auto merge of #18247 - jhgg:lsp/fix-something-to-resolve, r=Veykril
lsp: fix completion_item something_to_resolve not being a latch to true while looking at #18245 i noticed that `something_to_resolve` could technically flap between true -> false if some subsequent fields that were requested to be resolved were empty. this fixes that by using `|=` instead of `=` when assigning to `something_to_resolve` which will prevent it from going back to false once set. although some cases it's simply assigning to `true` i opted to continue to use `|=` there for uniformity sake. but happy to change those back to `=`'s. cc `@SomeoneToIgnore`
2 parents e33e819 + bab2a6e commit 7692c82

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

crates/rust-analyzer/src/lsp/to_proto.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,14 @@ fn completion_item(
280280
let mut something_to_resolve = false;
281281

282282
let filter_text = if fields_to_resolve.resolve_filter_text {
283-
something_to_resolve = !item.lookup().is_empty();
283+
something_to_resolve |= !item.lookup().is_empty();
284284
None
285285
} else {
286286
Some(item.lookup().to_owned())
287287
};
288288

289289
let text_edit = if fields_to_resolve.resolve_text_edit {
290-
something_to_resolve = true;
290+
something_to_resolve |= true;
291291
None
292292
} else {
293293
// LSP does not allow arbitrary edits in completion, so we have to do a
@@ -319,14 +319,14 @@ fn completion_item(
319319

320320
let insert_text_format = item.is_snippet.then_some(lsp_types::InsertTextFormat::SNIPPET);
321321
let tags = if fields_to_resolve.resolve_tags {
322-
something_to_resolve = item.deprecated;
322+
something_to_resolve |= item.deprecated;
323323
None
324324
} else {
325325
item.deprecated.then(|| vec![lsp_types::CompletionItemTag::DEPRECATED])
326326
};
327327
let command = if item.trigger_call_info && config.client_commands().trigger_parameter_hints {
328328
if fields_to_resolve.resolve_command {
329-
something_to_resolve = true;
329+
something_to_resolve |= true;
330330
None
331331
} else {
332332
Some(command::trigger_parameter_hints())
@@ -336,14 +336,14 @@ fn completion_item(
336336
};
337337

338338
let detail = if fields_to_resolve.resolve_detail {
339-
something_to_resolve = item.detail.is_some();
339+
something_to_resolve |= item.detail.is_some();
340340
None
341341
} else {
342342
item.detail
343343
};
344344

345345
let documentation = if fields_to_resolve.resolve_documentation {
346-
something_to_resolve = item.documentation.is_some();
346+
something_to_resolve |= item.documentation.is_some();
347347
None
348348
} else {
349349
item.documentation.map(documentation)
@@ -366,7 +366,7 @@ fn completion_item(
366366

367367
if config.completion_label_details_support() {
368368
if fields_to_resolve.resolve_label_details {
369-
something_to_resolve = true;
369+
something_to_resolve |= true;
370370
} else {
371371
lsp_item.label_details = Some(lsp_types::CompletionItemLabelDetails {
372372
detail: item.label_detail.as_ref().map(ToString::to_string),

0 commit comments

Comments
 (0)