Resolve proto hints with empty resolve data (#19274)

Fixed ssh remoting not showing a lot of hints


Release Notes:

- N/A
This commit is contained in:
Kirill Bulatov 2024-10-16 21:50:51 +03:00 committed by GitHub
parent 3dcc638537
commit 02f63e49ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 10 deletions

View file

@ -2439,15 +2439,13 @@ impl InlayHints {
ResolveState::Resolved => (0, None), ResolveState::Resolved => (0, None),
ResolveState::CanResolve(server_id, resolve_data) => ( ResolveState::CanResolve(server_id, resolve_data) => (
1, 1,
resolve_data Some(proto::resolve_state::LspResolveState {
.map(|json_data| { server_id: server_id.0 as u64,
value: resolve_data.map(|json_data| {
serde_json::to_string(&json_data) serde_json::to_string(&json_data)
.expect("failed to serialize resolve json data") .expect("failed to serialize resolve json data")
})
.map(|value| proto::resolve_state::LspResolveState {
server_id: server_id.0 as u64,
value,
}), }),
}),
), ),
ResolveState::Resolving => (2, None), ResolveState::Resolving => (2, None),
}; };
@ -2515,9 +2513,11 @@ impl InlayHints {
let resolve_state_data = resolve_state let resolve_state_data = resolve_state
.lsp_resolve_state.as_ref() .lsp_resolve_state.as_ref()
.map(|lsp_resolve_state| { .map(|lsp_resolve_state| {
serde_json::from_str::<Option<lsp::LSPAny>>(&lsp_resolve_state.value) let value = lsp_resolve_state.value.as_deref().map(|value| {
.with_context(|| format!("incorrect proto inlay hint message: non-json resolve state {lsp_resolve_state:?}")) serde_json::from_str::<Option<lsp::LSPAny>>(value)
.map(|state| (LanguageServerId(lsp_resolve_state.server_id as usize), state)) .with_context(|| format!("incorrect proto inlay hint message: non-json resolve state {lsp_resolve_state:?}"))
}).transpose()?.flatten();
anyhow::Ok((LanguageServerId(lsp_resolve_state.server_id as usize), value))
}) })
.transpose()?; .transpose()?;
let resolve_state = match resolve_state.state { let resolve_state = match resolve_state.state {

View file

@ -1207,7 +1207,7 @@ message ResolveState {
} }
message LspResolveState { message LspResolveState {
string value = 1; optional string value = 1;
uint64 server_id = 2; uint64 server_id = 2;
} }
} }