aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/main_loop.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server/src/main_loop.rs')
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs27
1 files changed, 18 insertions, 9 deletions
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index f51576521..ddd20a41f 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -205,17 +205,26 @@ fn main_loop_inner(
205 Some(req) => req, 205 Some(req) => req,
206 None => return Ok(()), 206 None => return Ok(()),
207 }; 207 };
208 match on_request(state, pending_requests, pool, &task_sender, req)? { 208 match req.cast::<req::CollectGarbage>() {
209 None => (), 209 Ok((id, ())) => {
210 Some(req) => { 210 state.collect_garbadge();
211 log::error!("unknown request: {:?}", req); 211 let resp = RawResponse::ok::<req::CollectGarbage>(id, &());
212 let resp = RawResponse::err(
213 req.id,
214 ErrorCode::MethodNotFound as i32,
215 "unknown request".to_string(),
216 );
217 msg_sender.send(RawMessage::Response(resp)).unwrap() 212 msg_sender.send(RawMessage::Response(resp)).unwrap()
218 } 213 }
214 Err(req) => {
215 match on_request(state, pending_requests, pool, &task_sender, req)? {
216 None => (),
217 Some(req) => {
218 log::error!("unknown request: {:?}", req);
219 let resp = RawResponse::err(
220 req.id,
221 ErrorCode::MethodNotFound as i32,
222 "unknown request".to_string(),
223 );
224 msg_sender.send(RawMessage::Response(resp)).unwrap()
225 }
226 }
227 }
219 } 228 }
220 } 229 }
221 RawMessage::Notification(not) => { 230 RawMessage::Notification(not) => {