aboutsummaryrefslogtreecommitdiff
path: root/crates/gen_lsp_server/src
diff options
context:
space:
mode:
authorMuhammad Mominul Huque <[email protected]>2019-06-14 20:03:17 +0100
committerMuhammad Mominul Huque <[email protected]>2019-06-14 20:03:17 +0100
commita931fb1ef633473e272bb3f9ba86968dd90f44a7 (patch)
treec412d82041686c7cd8033ff0bdc7ae5545c50cea /crates/gen_lsp_server/src
parent84b66107828365d02fd29641fe32b3c42f036864 (diff)
Get rid of failure: gen_lsp_server
Diffstat (limited to 'crates/gen_lsp_server/src')
-rw-r--r--crates/gen_lsp_server/src/lib.rs16
-rw-r--r--crates/gen_lsp_server/src/msg.rs7
-rw-r--r--crates/gen_lsp_server/src/stdio.rs5
3 files changed, 13 insertions, 15 deletions
diff --git a/crates/gen_lsp_server/src/lib.rs b/crates/gen_lsp_server/src/lib.rs
index 1cd5a3a7c..7643dcacc 100644
--- a/crates/gen_lsp_server/src/lib.rs
+++ b/crates/gen_lsp_server/src/lib.rs
@@ -54,7 +54,7 @@
54//! } 54//! }
55//! ``` 55//! ```
56 56
57use failure::{bail, format_err}; 57use std::error::Error;
58 58
59mod msg; 59mod msg;
60mod stdio; 60mod stdio;
@@ -66,7 +66,7 @@ use lsp_types::{
66 InitializeParams, InitializeResult, ServerCapabilities, 66 InitializeParams, InitializeResult, ServerCapabilities,
67}; 67};
68 68
69pub type Result<T> = ::std::result::Result<T, failure::Error>; 69pub type Result<T> = ::std::result::Result<T, Box<dyn Error + Send + Sync>>;
70pub use crate::{ 70pub use crate::{
71 msg::{ErrorCode, RawMessage, RawNotification, RawRequest, RawResponse, RawResponseError}, 71 msg::{ErrorCode, RawMessage, RawNotification, RawRequest, RawResponse, RawResponseError},
72 stdio::{stdio_transport, Threads}, 72 stdio::{stdio_transport, Threads},
@@ -92,8 +92,8 @@ pub fn run_server(
92 match receiver.recv() { 92 match receiver.recv() {
93 Ok(RawMessage::Notification(n)) => n 93 Ok(RawMessage::Notification(n)) => n
94 .cast::<Exit>() 94 .cast::<Exit>()
95 .map_err(|n| format_err!("unexpected notification during shutdown: {:?}", n))?, 95 .map_err(|n| format!("unexpected notification during shutdown: {:?}", n))?,
96 m => bail!("unexpected message during shutdown: {:?}", m), 96 m => Err(format!("unexpected message during shutdown: {:?}", m))?,
97 } 97 }
98 log::info!("lsp server shutdown complete"); 98 log::info!("lsp server shutdown complete");
99 Ok(()) 99 Ok(())
@@ -118,19 +118,19 @@ fn initialize(
118) -> Result<InitializeParams> { 118) -> Result<InitializeParams> {
119 let (id, params) = match receiver.recv() { 119 let (id, params) = match receiver.recv() {
120 Ok(RawMessage::Request(req)) => match req.cast::<Initialize>() { 120 Ok(RawMessage::Request(req)) => match req.cast::<Initialize>() {
121 Err(req) => bail!("expected initialize request, got {:?}", req), 121 Err(req) => Err(format!("expected initialize request, got {:?}", req))?,
122 Ok(req) => req, 122 Ok(req) => req,
123 }, 123 },
124 msg => bail!("expected initialize request, got {:?}", msg), 124 msg => Err(format!("expected initialize request, got {:?}", msg))?,
125 }; 125 };
126 let resp = RawResponse::ok::<Initialize>(id, &InitializeResult { capabilities: caps }); 126 let resp = RawResponse::ok::<Initialize>(id, &InitializeResult { capabilities: caps });
127 sender.send(RawMessage::Response(resp)).unwrap(); 127 sender.send(RawMessage::Response(resp)).unwrap();
128 match receiver.recv() { 128 match receiver.recv() {
129 Ok(RawMessage::Notification(n)) => { 129 Ok(RawMessage::Notification(n)) => {
130 n.cast::<Initialized>() 130 n.cast::<Initialized>()
131 .map_err(|_| format_err!("expected initialized notification"))?; 131 .map_err(|_| "expected initialized notification")?;
132 } 132 }
133 _ => bail!("expected initialized notification"), 133 _ => Err(format!("expected initialized notification"))?,
134 } 134 }
135 Ok(params) 135 Ok(params)
136} 136}
diff --git a/crates/gen_lsp_server/src/msg.rs b/crates/gen_lsp_server/src/msg.rs
index 1d39ba4bc..8138b84eb 100644
--- a/crates/gen_lsp_server/src/msg.rs
+++ b/crates/gen_lsp_server/src/msg.rs
@@ -3,7 +3,6 @@ use std::io::{BufRead, Write};
3use lsp_types::{notification::Notification, request::Request}; 3use lsp_types::{notification::Notification, request::Request};
4use serde::{Deserialize, Serialize}; 4use serde::{Deserialize, Serialize};
5use serde_json::{from_str, from_value, to_string, to_value, Value}; 5use serde_json::{from_str, from_value, to_string, to_value, Value};
6use failure::{bail, format_err};
7 6
8use crate::Result; 7use crate::Result;
9 8
@@ -175,7 +174,7 @@ fn read_msg_text(inp: &mut impl BufRead) -> Result<Option<String>> {
175 return Ok(None); 174 return Ok(None);
176 } 175 }
177 if !buf.ends_with("\r\n") { 176 if !buf.ends_with("\r\n") {
178 bail!("malformed header: {:?}", buf); 177 Err(format!("malformed header: {:?}", buf))?;
179 } 178 }
180 let buf = &buf[..buf.len() - 2]; 179 let buf = &buf[..buf.len() - 2];
181 if buf.is_empty() { 180 if buf.is_empty() {
@@ -184,12 +183,12 @@ fn read_msg_text(inp: &mut impl BufRead) -> Result<Option<String>> {
184 let mut parts = buf.splitn(2, ": "); 183 let mut parts = buf.splitn(2, ": ");
185 let header_name = parts.next().unwrap(); 184 let header_name = parts.next().unwrap();
186 let header_value = 185 let header_value =
187 parts.next().ok_or_else(|| format_err!("malformed header: {:?}", buf))?; 186 parts.next().ok_or_else(|| format!("malformed header: {:?}", buf))?;
188 if header_name == "Content-Length" { 187 if header_name == "Content-Length" {
189 size = Some(header_value.parse::<usize>()?); 188 size = Some(header_value.parse::<usize>()?);
190 } 189 }
191 } 190 }
192 let size = size.ok_or_else(|| format_err!("no Content-Length"))?; 191 let size = size.ok_or("no Content-Length")?;
193 let mut buf = buf.into_bytes(); 192 let mut buf = buf.into_bytes();
194 buf.resize(size, 0); 193 buf.resize(size, 0);
195 inp.read_exact(&mut buf)?; 194 inp.read_exact(&mut buf)?;
diff --git a/crates/gen_lsp_server/src/stdio.rs b/crates/gen_lsp_server/src/stdio.rs
index 2d6418400..f8931f2dc 100644
--- a/crates/gen_lsp_server/src/stdio.rs
+++ b/crates/gen_lsp_server/src/stdio.rs
@@ -4,7 +4,6 @@ use std::{
4}; 4};
5 5
6use crossbeam_channel::{bounded, Receiver, Sender}; 6use crossbeam_channel::{bounded, Receiver, Sender};
7use failure::bail;
8use lsp_types::notification::Exit; 7use lsp_types::notification::Exit;
9 8
10use crate::{RawMessage, Result}; 9use crate::{RawMessage, Result};
@@ -48,11 +47,11 @@ impl Threads {
48 pub fn join(self) -> Result<()> { 47 pub fn join(self) -> Result<()> {
49 match self.reader.join() { 48 match self.reader.join() {
50 Ok(r) => r?, 49 Ok(r) => r?,
51 Err(_) => bail!("reader panicked"), 50 Err(_) => Err("reader panicked")?,
52 } 51 }
53 match self.writer.join() { 52 match self.writer.join() {
54 Ok(r) => r, 53 Ok(r) => r,
55 Err(_) => bail!("writer panicked"), 54 Err(_) => Err("writer panicked")?,
56 } 55 }
57 } 56 }
58} 57}