Avoid error during deserialization if the result
field isn't there
This commit is contained in:
parent
f5aa07aac9
commit
882c8ce696
1 changed files with 5 additions and 3 deletions
|
@ -61,7 +61,7 @@ struct AnyResponse<'a> {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
error: Option<Error>,
|
error: Option<Error>,
|
||||||
#[serde(borrow)]
|
#[serde(borrow)]
|
||||||
result: &'a RawValue,
|
result: Option<&'a RawValue>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
|
@ -157,8 +157,10 @@ impl LanguageServer {
|
||||||
if let Some(handler) = response_handlers.lock().remove(&id) {
|
if let Some(handler) = response_handlers.lock().remove(&id) {
|
||||||
if let Some(error) = error {
|
if let Some(error) = error {
|
||||||
handler(Err(error));
|
handler(Err(error));
|
||||||
} else {
|
} else if let Some(result) = result {
|
||||||
handler(Ok(result.get()));
|
handler(Ok(result.get()));
|
||||||
|
} else {
|
||||||
|
handler(Ok("null"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -459,7 +461,7 @@ impl FakeLanguageServer {
|
||||||
let message = serde_json::to_vec(&AnyResponse {
|
let message = serde_json::to_vec(&AnyResponse {
|
||||||
id: request_id.id,
|
id: request_id.id,
|
||||||
error: None,
|
error: None,
|
||||||
result: &RawValue::from_string(result).unwrap(),
|
result: Some(&RawValue::from_string(result).unwrap()),
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
self.send(message).await;
|
self.send(message).await;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue