Unnamed repository; edit this file 'description' to name the repository.
bendn 6 weeks ago
parent 4298360 · commit f4acd50
-rw-r--r--lib/lsp-server/src/msg.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/lsp-server/src/msg.rs b/lib/lsp-server/src/msg.rs
index 5e91e33280..cdc75153bc 100644
--- a/lib/lsp-server/src/msg.rs
+++ b/lib/lsp-server/src/msg.rs
@@ -246,6 +246,17 @@ impl Request {
pub fn new<P: serde::Serialize>(id: RequestId, method: String, params: P) -> Request {
Request { id, method, params: serde_json::to_value(params).unwrap() }
}
+ pub fn load<P: lsp_types::request::Request>(
+ self,
+ ) -> Result<(RequestId, P::Params), ExtractError<Request>> {
+ if self.method != P::METHOD {
+ return Err(ExtractError::MethodMismatch(self));
+ }
+ match serde_json::from_value(self.params) {
+ Ok(params) => Ok((self.id, params)),
+ Err(error) => Err(ExtractError::JsonError { method: self.method, error }),
+ }
+ }
pub fn extract<P: DeserializeOwned>(
self,
method: &str,