mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Provide resolve data only when it can actually be resolved
This commit is contained in:
parent
caf018507a
commit
7b3dba5d77
13 changed files with 82 additions and 35 deletions
|
@ -442,13 +442,15 @@ pub(crate) fn inlay_hint(
|
|||
file_id: FileId,
|
||||
inlay_hint: InlayHint,
|
||||
) -> Cancellable<lsp_types::InlayHint> {
|
||||
let (label, tooltip) = inlay_hint_label(snap, fields_to_resolve, inlay_hint.label)?;
|
||||
let data = if fields_to_resolve.can_resolve() {
|
||||
let needs_resolve = inlay_hint.needs_resolve;
|
||||
let (label, tooltip) =
|
||||
inlay_hint_label(snap, fields_to_resolve, needs_resolve, inlay_hint.label)?;
|
||||
let data = if needs_resolve && fields_to_resolve.can_resolve() {
|
||||
Some(to_value(lsp_ext::InlayHintResolveData { file_id: file_id.0 }).unwrap())
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let text_edits = if fields_to_resolve.resolve_text_edits {
|
||||
let text_edits = if needs_resolve && fields_to_resolve.resolve_text_edits {
|
||||
None
|
||||
} else {
|
||||
inlay_hint.text_edit.map(|it| text_edit_vec(line_index, it))
|
||||
|
@ -476,12 +478,13 @@ pub(crate) fn inlay_hint(
|
|||
fn inlay_hint_label(
|
||||
snap: &GlobalStateSnapshot,
|
||||
fields_to_resolve: &InlayFieldsToResolve,
|
||||
needs_resolve: bool,
|
||||
mut label: InlayHintLabel,
|
||||
) -> Cancellable<(lsp_types::InlayHintLabel, Option<lsp_types::InlayHintTooltip>)> {
|
||||
let res = match &*label.parts {
|
||||
[InlayHintLabelPart { linked_location: None, .. }] => {
|
||||
let InlayHintLabelPart { text, tooltip, .. } = label.parts.pop().unwrap();
|
||||
let hint_tooltip = if fields_to_resolve.resolve_hint_tooltip {
|
||||
let hint_tooltip = if needs_resolve && fields_to_resolve.resolve_hint_tooltip {
|
||||
None
|
||||
} else {
|
||||
match tooltip {
|
||||
|
@ -504,7 +507,7 @@ fn inlay_hint_label(
|
|||
.parts
|
||||
.into_iter()
|
||||
.map(|part| {
|
||||
let tooltip = if fields_to_resolve.resolve_label_tooltip {
|
||||
let tooltip = if needs_resolve && fields_to_resolve.resolve_label_tooltip {
|
||||
None
|
||||
} else {
|
||||
match part.tooltip {
|
||||
|
@ -522,7 +525,7 @@ fn inlay_hint_label(
|
|||
None => None,
|
||||
}
|
||||
};
|
||||
let location = if fields_to_resolve.resolve_label_location {
|
||||
let location = if needs_resolve && fields_to_resolve.resolve_label_location {
|
||||
None
|
||||
} else {
|
||||
part.linked_location.map(|range| location(snap, range)).transpose()?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue