Skip to content

Commit 257a15b

Browse files
bors[bot]mominul
andcommitted
Merge #1404
1404: Fight down failures! r=matklad a=mominul issue #1400 Now only `ra_tools` crate depends on `failure`, should I also fight those? 😁 Co-authored-by: Muhammad Mominul Huque <[email protected]>
2 parents 9dbf985 + 408e173 commit 257a15b

File tree

21 files changed

+61
-78
lines changed

21 files changed

+61
-78
lines changed

Cargo.lock

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/gen_lsp_server/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ description = "Generic LSP server scaffold."
1010
[dependencies]
1111
lsp-types = "0.57.0"
1212
log = "0.4.3"
13-
failure = "0.1.4"
1413
serde_json = "1.0.34"
1514
serde = { version = "1.0.83", features = ["derive"] }
1615
crossbeam-channel = "0.3.5"

crates/gen_lsp_server/examples/01_gen_lsp_server.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
use std::error::Error;
2+
13
use crossbeam_channel::{Sender, Receiver};
24
use lsp_types::{
35
ServerCapabilities, InitializeParams,
46
request::{GotoDefinition, GotoDefinitionResponse},
57
};
68
use gen_lsp_server::{run_server, stdio_transport, handle_shutdown, RawMessage, RawResponse};
79

8-
fn main() -> Result<(), failure::Error> {
10+
fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
911
let (receiver, sender, io_threads) = stdio_transport();
1012
run_server(ServerCapabilities::default(), receiver, sender, main_loop)?;
1113
io_threads.join()?;
@@ -16,7 +18,7 @@ fn main_loop(
1618
_params: InitializeParams,
1719
receiver: &Receiver<RawMessage>,
1820
sender: &Sender<RawMessage>,
19-
) -> Result<(), failure::Error> {
21+
) -> Result<(), Box<dyn Error + Sync + Send>> {
2022
for msg in receiver {
2123
match msg {
2224
RawMessage::Request(req) => {

crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
//! {"jsonrpc": "2.0", "method": "exit", "params": null}
4343
//! ```
4444
45+
use std::error::Error;
46+
4547
use crossbeam_channel::{Sender, Receiver};
4648
use lsp_types::{
4749
ServerCapabilities, InitializeParams,
@@ -52,7 +54,7 @@ use gen_lsp_server::{
5254
run_server, stdio_transport, handle_shutdown, RawMessage, RawResponse, RawRequest,
5355
};
5456

55-
fn main() -> Result<(), failure::Error> {
57+
fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
5658
// Set up logging. Because `stdio_transport` gets a lock on stdout and stdin, we must have
5759
// our logging only write out to stderr.
5860
flexi_logger::Logger::with_str("info").start().unwrap();
@@ -75,7 +77,7 @@ fn main_loop(
7577
_params: InitializeParams,
7678
receiver: &Receiver<RawMessage>,
7779
sender: &Sender<RawMessage>,
78-
) -> Result<(), failure::Error> {
80+
) -> Result<(), Box<dyn Error + Sync + Send>> {
7981
info!("starting example main loop");
8082
for msg in receiver {
8183
info!("got msg: {:?}", msg);

crates/gen_lsp_server/src/lib.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
//! Run with `RUST_LOG=gen_lsp_server=debug` to see all the messages.
66
//!
77
//! ```no_run
8+
//! use std::error::Error;
89
//! use crossbeam_channel::{Sender, Receiver};
910
//! use lsp_types::{ServerCapabilities, InitializeParams, request::{GotoDefinition, GotoDefinitionResponse}};
1011
//! use gen_lsp_server::{run_server, stdio_transport, handle_shutdown, RawMessage, RawResponse};
1112
//!
12-
//! fn main() -> Result<(), failure::Error> {
13+
//! fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
1314
//! let (receiver, sender, io_threads) = stdio_transport();
1415
//! run_server(
1516
//! ServerCapabilities::default(),
@@ -25,7 +26,7 @@
2526
//! _params: InitializeParams,
2627
//! receiver: &Receiver<RawMessage>,
2728
//! sender: &Sender<RawMessage>,
28-
//! ) -> Result<(), failure::Error> {
29+
//! ) -> Result<(), Box<dyn Error + Send + Sync>> {
2930
//! for msg in receiver {
3031
//! match msg {
3132
//! RawMessage::Request(req) => {
@@ -54,7 +55,7 @@
5455
//! }
5556
//! ```
5657
57-
use failure::{bail, format_err};
58+
use std::error::Error;
5859

5960
mod msg;
6061
mod stdio;
@@ -66,7 +67,7 @@ use lsp_types::{
6667
InitializeParams, InitializeResult, ServerCapabilities,
6768
};
6869

69-
pub type Result<T> = ::std::result::Result<T, failure::Error>;
70+
pub type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
7071
pub use crate::{
7172
msg::{ErrorCode, RawMessage, RawNotification, RawRequest, RawResponse, RawResponseError},
7273
stdio::{stdio_transport, Threads},
@@ -92,8 +93,8 @@ pub fn run_server(
9293
match receiver.recv() {
9394
Ok(RawMessage::Notification(n)) => n
9495
.cast::<Exit>()
95-
.map_err(|n| format_err!("unexpected notification during shutdown: {:?}", n))?,
96-
m => bail!("unexpected message during shutdown: {:?}", m),
96+
.map_err(|n| format!("unexpected notification during shutdown: {:?}", n))?,
97+
m => Err(format!("unexpected message during shutdown: {:?}", m))?,
9798
}
9899
log::info!("lsp server shutdown complete");
99100
Ok(())
@@ -118,19 +119,18 @@ fn initialize(
118119
) -> Result<InitializeParams> {
119120
let (id, params) = match receiver.recv() {
120121
Ok(RawMessage::Request(req)) => match req.cast::<Initialize>() {
121-
Err(req) => bail!("expected initialize request, got {:?}", req),
122+
Err(req) => Err(format!("expected initialize request, got {:?}", req))?,
122123
Ok(req) => req,
123124
},
124-
msg => bail!("expected initialize request, got {:?}", msg),
125+
msg => Err(format!("expected initialize request, got {:?}", msg))?,
125126
};
126127
let resp = RawResponse::ok::<Initialize>(id, &InitializeResult { capabilities: caps });
127128
sender.send(RawMessage::Response(resp)).unwrap();
128129
match receiver.recv() {
129130
Ok(RawMessage::Notification(n)) => {
130-
n.cast::<Initialized>()
131-
.map_err(|_| format_err!("expected initialized notification"))?;
131+
n.cast::<Initialized>().map_err(|_| "expected initialized notification")?;
132132
}
133-
_ => bail!("expected initialized notification"),
133+
_ => Err(format!("expected initialized notification"))?,
134134
}
135135
Ok(params)
136136
}

crates/gen_lsp_server/src/msg.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use std::io::{BufRead, Write};
33
use lsp_types::{notification::Notification, request::Request};
44
use serde::{Deserialize, Serialize};
55
use serde_json::{from_str, from_value, to_string, to_value, Value};
6-
use failure::{bail, format_err};
76

87
use crate::Result;
98

@@ -175,21 +174,20 @@ fn read_msg_text(inp: &mut impl BufRead) -> Result<Option<String>> {
175174
return Ok(None);
176175
}
177176
if !buf.ends_with("\r\n") {
178-
bail!("malformed header: {:?}", buf);
177+
Err(format!("malformed header: {:?}", buf))?;
179178
}
180179
let buf = &buf[..buf.len() - 2];
181180
if buf.is_empty() {
182181
break;
183182
}
184183
let mut parts = buf.splitn(2, ": ");
185184
let header_name = parts.next().unwrap();
186-
let header_value =
187-
parts.next().ok_or_else(|| format_err!("malformed header: {:?}", buf))?;
185+
let header_value = parts.next().ok_or_else(|| format!("malformed header: {:?}", buf))?;
188186
if header_name == "Content-Length" {
189187
size = Some(header_value.parse::<usize>()?);
190188
}
191189
}
192-
let size = size.ok_or_else(|| format_err!("no Content-Length"))?;
190+
let size = size.ok_or("no Content-Length")?;
193191
let mut buf = buf.into_bytes();
194192
buf.resize(size, 0);
195193
inp.read_exact(&mut buf)?;

crates/gen_lsp_server/src/stdio.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::{
44
};
55

66
use crossbeam_channel::{bounded, Receiver, Sender};
7-
use failure::bail;
87
use lsp_types::notification::Exit;
98

109
use crate::{RawMessage, Result};
@@ -48,11 +47,11 @@ impl Threads {
4847
pub fn join(self) -> Result<()> {
4948
match self.reader.join() {
5049
Ok(r) => r?,
51-
Err(_) => bail!("reader panicked"),
50+
Err(_) => Err("reader panicked")?,
5251
}
5352
match self.writer.join() {
5453
Ok(r) => r,
55-
Err(_) => bail!("writer panicked"),
54+
Err(_) => Err("writer panicked")?,
5655
}
5756
}
5857
}

crates/ra_batch/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ authors = ["rust-analyzer developers"]
88
log = "0.4.5"
99
rustc-hash = "1.0"
1010

11-
failure = "0.1.4"
12-
1311
ra_vfs = "0.2.0"
1412
ra_syntax = { path = "../ra_syntax" }
1513
ra_db = { path = "../ra_db" }

crates/ra_batch/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
mod vfs_filter;
22

3-
use std::sync::Arc;
4-
use std::path::Path;
5-
use std::collections::HashSet;
3+
use std::{sync::Arc, path::Path, collections::HashSet, error::Error};
64

75
use rustc_hash::FxHashMap;
86

@@ -14,7 +12,7 @@ use ra_project_model::ProjectWorkspace;
1412
use ra_vfs::{Vfs, VfsChange};
1513
use vfs_filter::IncludeRustFiles;
1614

17-
type Result<T> = std::result::Result<T, failure::Error>;
15+
type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
1816

1917
#[salsa::database(
2018
ra_db::SourceDatabaseStorage,

crates/ra_cli/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ publish = false
77

88
[dependencies]
99
clap = "2.32.0"
10-
failure = "0.1.4"
1110
join_to_string = "0.1.1"
1211
flexi_logger = "0.11.0"
1312
indicatif = "0.11.0"

crates/ra_cli/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
mod analysis_stats;
22

3-
use std::io::Read;
3+
use std::{io::Read, error::Error};
44

55
use clap::{App, Arg, SubCommand};
66
use ra_ide_api::{file_structure, Analysis};
77
use ra_syntax::{SourceFile, TreeArc, AstNode};
88
use flexi_logger::Logger;
99
use ra_prof::profile;
1010

11-
type Result<T> = ::std::result::Result<T, failure::Error>;
11+
type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
1212

1313
fn main() -> Result<()> {
1414
Logger::with_env().start()?;

crates/ra_lsp_server/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ authors = ["rust-analyzer developers"]
77
[dependencies]
88
threadpool = "1.7.1"
99
relative-path = "0.4.0"
10-
failure = "0.1.4"
11-
failure_derive = "0.1.4"
1210
serde_json = "1.0.34"
1311
serde = { version = "1.0.83", features = ["derive"] }
1412
crossbeam-channel = "0.3.5"

crates/ra_lsp_server/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ pub mod req;
99
pub mod init;
1010
mod world;
1111

12-
pub type Result<T> = ::std::result::Result<T, ::failure::Error>;
12+
pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error + Send + Sync>>;
1313
pub use crate::{caps::server_capabilities, main_loop::main_loop, main_loop::LspError, init::InitializationOptions};

crates/ra_lsp_server/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ fn main() -> Result<()> {
2525
}
2626
Err(_) => {
2727
log::error!("server panicked");
28-
failure::bail!("server panicked")
28+
Err("server panicked")?
2929
}
3030
}
3131
}

0 commit comments

Comments
 (0)